def create_deployment(client, environment_name, config): """ Create a new deployment (Cloudera Manager) with data from the configuration file @param client: authenticated API client @param environment_name: the name of the parent environment @param config: parsed configuration file """ template = DeploymentTemplate( name="%s Deployment" % config.get("cluster", "name"), managerVirtualInstance=create_virtual_instance_with_random_id(config, "manager"), port=7180, enableEnterpriseTrial=True, configs={"CLOUDERA_MANAGER": {"enable_api_debug": "true"}}, ) api = DeploymentsApi(client) try: api.create(environment_name, template) except HTTPError as e: if e.code == 302: print "Warning: a deployment with the same name already exists" else: raise e print "Deployments: %s" % api.list(environment_name) return template.name
def create_deployment(client, environment_name, config): """ Create a new deployment (Cloudera Manager) with data from the configuration file @param client: authenticated API client @param environment_name: the name of the parent environment @param config: parsed configuration file """ template = DeploymentTemplate( name="%s Deployment" % config.get('cluster', 'name'), managerVirtualInstance= \ create_virtual_instance_with_random_id(config, 'manager'), port=7180, enableEnterpriseTrial=True, configs={ 'CLOUDERA_MANAGER': { 'enable_api_debug': 'true' } } ) api = DeploymentsApi(client) try: api.create(environment_name, template) except HTTPError as e: if e.code == 302: print 'Warning: a deployment with the same name already exists' else: raise e print "Deployments: %s" % api.list(environment_name) return template.name
def main(): parser = argparse.ArgumentParser(prog='change-deployment-password.py') parser.add_argument('--admin-username', default='admin', help='Name of a user with administrative access to Cloudera Director (defaults to %(default)s)') parser.add_argument('--admin-password', default='admin', help='Password for the administrative user (defaults to %(default)s)') parser.add_argument('--server', default='http://localhost:7189', help="Cloudera Director server URL (defaults to %(default)s)") parser.add_argument('--debug', default=False, action='store_true', help="Whether to provide additional debugging output (defaults to %(default)s)") parser.add_argument('--environment', help='Environment name', required=True) parser.add_argument('--deployment', help='Deployment name (Cloudera Manager instance)', required=True) parser.add_argument('--deployment-username', help='Cloudera Manager new username', default=None) parser.add_argument('--deployment-password', help='Cloudera Manager new password', default=None) args = parser.parse_args() if args.debug: # Enable HTTP request logging to help with debugging h = urllib2.HTTPHandler(debuglevel=1) opener = urllib2.build_opener(h) urllib2.install_opener(opener) client = get_authenticated_client(args) api = DeploymentsApi(client) template = api.getTemplateRedacted(args.environment, args.deployment) if template.port == 0: template.port = None if args.deployment_username: print "Changing username from: '%s' to: '%s'" % (template.username, args.deployment_username) template.username = args.deployment_username else: print "The deployment username is not changing: '%s'" % template.username if args.deployment_password: print "Changing password to: '%s'" % (args.deployment_password) template.password = args.deployment_password else: print "Deployment password is not changing" if args.deployment_username or args.deployment_password: api.update(args.environment, args.deployment, template) print 'Done' else: print 'Nothing to do' return 0
def update_deployment_template(client, env_name, dep_name, template): """ Update a deployment template. @param client: Director API client @param env_name: environment name @param dep_name: deployment name @param template: updated deployment template """ api = DeploymentsApi(client) api.update(env_name, dep_name, template)
def wait_for_deployment(client, environment_name, deployment_name): """ Wait for the deployment bootstrap process to complete @param client: authenticated API client """ api = DeploymentsApi(client) stage = None while stage not in ["READY", "BOOTSTRAP_FAILED"]: sys.stdout.write(".") sys.stdout.flush() time.sleep(0.5) stage = api.getStatus(environment_name, deployment_name).stage print "\nDeployment '%s' current stage is '%s'" % (deployment_name, stage)
def wait_for_deployment(client, environment_name, deployment_name): """ Wait for the deployment bootstrap process to complete @param client: authenticated API client """ api = DeploymentsApi(client) stage = None while stage not in ['READY', 'BOOTSTRAP_FAILED']: sys.stdout.write(".") sys.stdout.flush() time.sleep(0.5) stage = api.getStatus(environment_name, deployment_name).stage print "\nDeployment '%s' current stage is '%s'" % (deployment_name, stage)
def get_deployment_template(client, env_name, dep_name): """ Get a deployment template. @param client: Director API client @param env_name: environment name @param dep_name: deployment name @rtype: DeploymentTemplate @return: deployment template """ api = DeploymentsApi(client) try: return api.getTemplateRedacted(env_name, dep_name) except HTTPError as error: if error.code == 404: print 'Error: the deployment %s does not exist in the environment %s' % ( env_name, dep_name) else: raise error
def main(arguments): # Get all command line arguments cloudera_director_server = arguments[0] admin_username = arguments[1] credentials_file_path = arguments[2] admin_password = open(credentials_file_path, 'r').read() num_lookback_dates = arguments[3] # Optional arguments for transient clusters cluster_name = '' if ((len(arguments)) > 4): cluster_name = arguments[4] # Setup a Cloudera Director Client client = ApiClient(cloudera_director_server) AuthenticationApi(client).login( Login(username=admin_username, password=admin_password)) # Get all Environments environments = EnvironmentsApi(client).list() if not environments: sys.exit(1) # Get start and end time of the query local_tz = timezone('US/Eastern') from_time = datetime.now() - timedelta(hours=8) from_time = from_time.replace(tzinfo=local_tz) to_time = datetime.now().replace(tzinfo=local_tz) # Iterate through all environments to get all deployments for environment in environments: deployments = DeploymentsApi(client).list(environment) if not deployments: continue # Iterate through all deployments to get all clusters for deployment in deployments: clusters = ClustersApi(client).list(environment, deployment) if not clusters: continue # Iterate through all clusters to run queries for cluster in clusters: #Filter only the cluster if cluster name passed as argument if (cluster_name != '' and cluster_name != cluster): continue print( "Get the usage of cluster [%s] in deployment [%s] in environment [%s] from [%s] to [%s] " % (cluster, deployment, environment, from_time, to_time)) runQuery(client, environment, deployment, cluster, from_time, to_time)
def main(): parser = argparse.ArgumentParser(prog='change-deployment-password.py') parser.add_argument( '--admin-username', default='admin', help= 'Name of a user with administrative access to Cloudera Altus Director (defaults to %(default)s)' ) parser.add_argument( '--admin-password', default='admin', help='Password for the administrative user (defaults to %(default)s)') parser.add_argument( '--server', default='http://localhost:7189', help="Cloudera Altus Director server URL (defaults to %(default)s)") parser.add_argument( '--debug', default=False, action='store_true', help= "Whether to provide additional debugging output (defaults to %(default)s)" ) parser.add_argument('--environment', help='Environment name', required=True) parser.add_argument('--deployment', help='Deployment name (Cloudera Manager instance)', required=True) parser.add_argument('--deployment-username', help='Cloudera Manager new username', default=None) parser.add_argument('--deployment-password', help='Cloudera Manager new password', default=None) args = parser.parse_args() if args.debug: # Enable HTTP request logging to help with debugging h = urllib2.HTTPHandler(debuglevel=1) opener = urllib2.build_opener(h) urllib2.install_opener(opener) client = get_authenticated_client(args) api = DeploymentsApi(client) template = api.getTemplateRedacted(args.environment, args.deployment) if template.port == 0: template.port = None if args.deployment_username: print "Changing username from: '%s' to: '%s'" % ( template.username, args.deployment_username) template.username = args.deployment_username else: print "The deployment username is not changing: '%s'" % template.username if args.deployment_password: print "Changing password to: '%s'" % (args.deployment_password) template.password = args.deployment_password else: print "Deployment password is not changing" if args.deployment_username or args.deployment_password: api.update(args.environment, args.deployment, template) print 'Done' else: print 'Nothing to do' return 0