Example #1
0
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
Example #2
0
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
Example #4
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
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
Example #8
0
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