def link_ase_dsource(engine_name):
    """
    Link an ASE dSource
    """

    link_params = LinkParameters()
    link_params.name = arguments['--dsource_name']
    link_params.link_data = ASELinkData()
    link_params.link_data.db_credentials = {'type': 'PasswordCredential',
                                            'password':
                                                arguments['--ase_passwd']}
    link_params.link_data.db_user = arguments['--ase_user']
    link_params.link_data.load_backup_path = arguments['--backup_path']

    if arguments['--bck_file']:
        link_params.link_data.sync_parameters = \
            ASESpecificBackupSyncParameters()
        bck_files = (arguments['--bck_file']).split(' ')
        link_params.link_data.sync_parameters.backup_files = bck_files

    elif arguments['--create_bckup']:
        link_params.link_data.sync_parameters = ASENewBackupSyncParameters()

    else:
        link_params.link_data.sync_parameters = ASELatestBackupSyncParameters()

    try:
        link_params.group = find_obj_by_name(
            dx_session_obj.server_session, group,
            arguments['--dx_group']).reference
        env_user_ref = link_params.link_data.stage_user = find_obj_by_name(
            dx_session_obj.server_session, environment,
            arguments['--env_name']).primary_user
        link_params.link_data.staging_host_user = env_user_ref
        link_params.link_data.source_host_user = env_user_ref

        link_params.link_data.config = find_obj_by_name(
            dx_session_obj.server_session, sourceconfig,
            arguments['--src_config']).reference
        link_params.link_data.staging_repository = find_obj_by_name(
            dx_session_obj.server_session, repository,
            arguments['--stage_repo']).reference

    except DlpxException as e:
        print_exception('Could not link {}: {}\n'.format(
            arguments['--dsource_name'], e))
        sys.exit(1)

    try:
        dsource_ref = database.link(dx_session_obj.server_session, link_params)
        dx_session_obj.jobs[engine_name] = dx_session_obj.server_session.last_job
        dx_session_obj.jobs[engine_name + 'snap'] = get_running_job(
            dx_session_obj.server_session, find_obj_by_name(
                dx_session_obj.server_session, database,
                arguments['--dsource_name']).reference)
        print '{} sucessfully linked {}'.format(dsource_ref,
                                                arguments['--dsource_name'])
    except (RequestError, HttpError) as e:
        print_exception('Database link failed for {}:\n{}'.format(
            arguments['--dsource_name'], e))
def link_ase_dsource(engine_name):
    """
    Link an ASE dSource
    """

    link_params = LinkParameters()
    link_params.name = arguments['--dsource_name']
    link_params.link_data = ASELinkData()
    link_params.link_data.db_credentials = {'type': 'PasswordCredential',
                                            'password':
                                                arguments['--ase_passwd']}
    link_params.link_data.db_user = arguments['--ase_user']
    link_params.link_data.load_backup_path = arguments['--backup_path']

    if arguments['--bck_file']:
        link_params.link_data.sync_parameters = \
            ASESpecificBackupSyncParameters()
        bck_files = (arguments['--bck_file']).split(' ')
        link_params.link_data.sync_parameters.backup_files = bck_files

    elif arguments['--create_bckup']:
        link_params.link_data.sync_parameters = ASENewBackupSyncParameters()

    else:
        link_params.link_data.sync_parameters = ASELatestBackupSyncParameters()

    try:
        link_params.group = find_obj_by_name(
            dx_session_obj.server_session, group,
            arguments['--dx_group']).reference
        env_user_ref = link_params.link_data.stage_user = find_obj_by_name(
            dx_session_obj.server_session, environment,
            arguments['--env_name']).primary_user
        link_params.link_data.staging_host_user = env_user_ref
        link_params.link_data.source_host_user = env_user_ref

        link_params.link_data.config = find_obj_by_name(
            dx_session_obj.server_session, sourceconfig,
            arguments['--src_config']).reference
        link_params.link_data.staging_repository = find_obj_by_name(
            dx_session_obj.server_session, repository,
            arguments['--stage_repo']).reference

    except DlpxException as e:
        print_exception('Could not link {}: {}\n'.format(
            arguments['--dsource_name'], e))
        sys.exit(1)

    try:
        dsource_ref = database.link(dx_session_obj.server_session, link_params)
        dx_session_obj.jobs[engine_name] = dx_session_obj.server_session.last_job
        dx_session_obj.jobs[engine_name + 'snap'] = get_running_job(
            dx_session_obj.server_session, find_obj_by_name(
                dx_session_obj.server_session, database,
                arguments['--dsource_name']).reference)
        print '{} sucessfully linked {}'.format(dsource_ref,
                                                arguments['--dsource_name'])
    except (RequestError, HttpError) as e:
        print_exception('Database link failed for {}:\n{}'.format(
            arguments['--dsource_name'], e))
def link_mssql_dsource(engine_name):
    """
    Link an MSSQL dSource
    """
    link_params = LinkParameters()
    link_params.name = arguments['--dsource_name']
    link_params.link_data = MSSqlLinkData()

    try:
        env_obj_ref = find_obj_by_name(dx_session_obj.server_session,
                                       environment,
                                       arguments['--stage_env']).reference

        link_params.link_data.ppt_repository = find_dbrepo(
            dx_session_obj.server_session, 'MSSqlInstance', env_obj_ref,
            arguments['--stage_instance']).reference
        link_params.link_data.config = find_obj_by_name(
            dx_session_obj.server_session, sourceconfig,
            arguments['--dsource_name']).reference
        link_params.group = find_obj_by_name(dx_session_obj.server_session,
                                             group,
                                             arguments['--dx_group']).reference

    except DlpxException as e:
        print_exception('Could not link {}: {}\n'.format(
            arguments['--dsource_name'], e))
        sys.exit(1)

    if arguments['--backup_path'] != "auto":
      link_params.link_data.shared_backup_location = arguments['--backup_path']

    if arguments['--backup_loc_passwd']:
        link_params.link_data.backup_location_credentials = {'type':
                                                        'PasswordCredential',
                                                             'password':
                                            arguments['--backup_loc_passwd']}
        link_params.link_data.backup_location_user = \
            arguments['--backup_loc_user']

    link_params.link_data.db_credentials = {'type': 'PasswordCredential',
                                            'password':
                                                arguments['--db_passwd']}
    link_params.link_data.db_user = arguments['--db_user']

    link_params.link_data.sourcing_policy = SourcingPolicy()

    if arguments['--load_from_backup']:
      link_params.link_data.sourcing_policy.load_from_backup = True

    if arguments['--logsync']:
        link_params.link_data.sourcing_policy.logsync_enabled = True

    try:
        database.link(dx_session_obj.server_session, link_params)
        dx_session_obj.jobs[engine_name] = dx_session_obj.server_session.last_job
        dx_session_obj.jobs[engine_name + 'snap'] = get_running_job(
            dx_session_obj.server_session, find_obj_by_name(
                dx_session_obj.server_session, database,
                arguments['--dsource_name']).reference)

    except (HttpError, RequestError, JobError) as e:
        print_exception('Database link failed for {}:\n{}\n'.format(
            arguments['--dsource_name'], e))
def create_ora_sourceconfig(engine_name, port_num=1521):
    """
    :param ip_addr:
    :param db_name:
    :return:
    """
    create_ret = None
    env_obj = find_obj_by_name(dx_session_obj.server_session, environment,
                               arguments['--env_name'])

    try:
        sourceconfig_ref = find_obj_by_name(dx_session_obj.server_session,
                                            sourceconfig,
                                            arguments['--db_name']).reference
    except DlpxException:
        sourceconfig_ref = None

    repo_ref = find_dbrepo(dx_session_obj.server_session,
                           'OracleInstall', env_obj.reference,
                           arguments['--db_install_path']).reference

    dsource_params = OracleSIConfig()

    connect_str = ('jdbc:oracle:thin:@' + arguments['--ip_addr'] + ':' +
                   str(port_num) + ':' + arguments['--db_name'])

    dsource_params.database_name = arguments['--db_name']
    dsource_params.unique_name = arguments['--db_name']
    dsource_params.repository = repo_ref
    dsource_params.instance = OracleInstance()
    dsource_params.instance.instance_name = arguments['--db_name']
    dsource_params.instance.instance_number = 1
    dsource_params.services = [{'type': 'OracleService',
                                'jdbcConnectionString': connect_str}]

    try:
        if sourceconfig_ref is None:
            create_ret = link_ora_dsource(sourceconfig.create(
                dx_session_obj.server_session, dsource_params),
                env_obj.primary_user)
        elif sourceconfig_ref is not None:
            create_ret = link_ora_dsource(sourceconfig_ref,
                                          env_obj.primary_user)

        print_info('Created and linked the dSource {} with reference {}.\n'.format(
              arguments['--db_name'], create_ret))
        link_job_ref = dx_session_obj.server_session.last_job
        link_job_obj = job.get(dx_session_obj.server_session,
                                      link_job_ref)
        while link_job_obj.job_state not in ["CANCELED", "COMPLETED", "FAILED"]:
          print_info('Waiting three seconds for link job to complete, and sync to begin')
          sleep(3)
          link_job_obj = job.get(dx_session_obj.server_session,
                                      link_job_ref)

        #Add the snapsync job to the jobs dictionary
        dx_session_obj.jobs[engine_name + 'snap'] = get_running_job(
            dx_session_obj.server_session, find_obj_by_name(
                dx_session_obj.server_session, database,
                arguments['--dsource_name']).reference)
        print_debug('Snapshot Job Reference: {}.\n'.format(
          dx_session_obj.jobs[engine_name + 'snap']))
    except (HttpError, RequestError) as e:
        print_exception('ERROR: Could not create the sourceconfig:\n'
                        '{}'.format(e))
        sys.exit(1)
Пример #5
0
def link_mssql_dsource(engine_name):
    """
    Link an MSSQL dSource
    """
    link_params = LinkParameters()
    link_params.name = arguments["--dsource_name"]
    link_params.link_data = MSSqlLinkData()

    try:
        env_obj_ref = find_obj_by_name(dx_session_obj.server_session,
                                       environment,
                                       arguments["--stage_env"]).reference

        link_params.link_data.ppt_repository = find_dbrepo(
            dx_session_obj.server_session,
            "MSSqlInstance",
            env_obj_ref,
            arguments["--stage_instance"],
        ).reference
        link_params.link_data.config = find_obj_by_name(
            dx_session_obj.server_session, sourceconfig,
            arguments["--dsource_name"]).reference
        link_params.group = find_obj_by_name(dx_session_obj.server_session,
                                             group,
                                             arguments["--dx_group"]).reference

    except DlpxException as e:
        print_exception("Could not link {}: {}\n".format(
            arguments["--dsource_name"], e))
        sys.exit(1)

    if arguments["--backup_path"] != "auto":
        link_params.link_data.shared_backup_location = arguments[
            "--backup_path"]

    if arguments["--backup_loc_passwd"]:
        link_params.link_data.backup_location_credentials = {
            "type": "PasswordCredential",
            "password": arguments["--backup_loc_passwd"],
        }
        link_params.link_data.backup_location_user = arguments[
            "--backup_loc_user"]

    link_params.link_data.db_credentials = {
        "type": "PasswordCredential",
        "password": arguments["--db_passwd"],
    }
    link_params.link_data.db_user = arguments["--db_user"]

    link_params.link_data.sourcing_policy = SourcingPolicy()

    if arguments["--load_from_backup"]:
        link_params.link_data.sourcing_policy.load_from_backup = True

    if arguments["--sync_mode"]:
        link_params.link_data.validated_sync_mode = arguments["sync_mode"]

    if arguments["--logsync"]:
        link_params.link_data.sourcing_policy.logsync_enabled = True

    try:
        database.link(dx_session_obj.server_session, link_params)
        dx_session_obj.jobs[
            engine_name] = dx_session_obj.server_session.last_job
        dx_session_obj.jobs[engine_name + "snap"] = get_running_job(
            dx_session_obj.server_session,
            find_obj_by_name(dx_session_obj.server_session, database,
                             arguments["--dsource_name"]).reference,
        )

    except (HttpError, RequestError, JobError) as e:
        print_exception("Database link failed for {}:\n{}\n".format(
            arguments["--dsource_name"], e))
def link_mssql_dsource(engine_name):
    """
    Link an MSSQL dSource
    """
    link_params = LinkParameters()
    link_params.name = arguments['--dsource_name']
    link_params.link_data = MSSqlLinkData()

    try:
        env_obj_ref = find_obj_by_name(dx_session_obj.server_session,
                                       environment,
                                       arguments['--stage_env']).reference

        link_params.link_data.ppt_repository = find_dbrepo(
            dx_session_obj.server_session, 'MSSqlInstance', env_obj_ref,
            arguments['--stage_instance']).reference
        link_params.link_data.config = find_obj_by_name(
            dx_session_obj.server_session, sourceconfig,
            arguments['--dsource_name']).reference
        link_params.group = find_obj_by_name(dx_session_obj.server_session,
                                             group,
                                             arguments['--dx_group']).reference

    except DlpxException as e:
        print_exception('Could not link {}: {}\n'.format(
            arguments['--dsource_name'], e))
        sys.exit(1)

    if arguments['--backup_path'] != "auto":
      link_params.link_data.shared_backup_location = arguments['--backup_path']

    if arguments['--backup_loc_passwd']:
        link_params.link_data.backup_location_credentials = {'type':
                                                        'PasswordCredential',
                                                             'password':
                                            arguments['--backup_loc_passwd']}
        link_params.link_data.backup_location_user = \
            arguments['--backup_loc_user']

    link_params.link_data.db_credentials = {'type': 'PasswordCredential',
                                            'password':
                                                arguments['--db_passwd']}
    link_params.link_data.db_user = arguments['--db_user']

    link_params.link_data.sourcing_policy = SourcingPolicy()

    if arguments['--load_from_backup']:
      link_params.link_data.sourcing_policy.load_from_backup = True

    if arguments['--sync_mode']:
        link_params.link_data.validated_sync_mode = arguments['sync_mode']

    if arguments['--logsync']:
        link_params.link_data.sourcing_policy.logsync_enabled = True

    try:
        database.link(dx_session_obj.server_session, link_params)
        dx_session_obj.jobs[engine_name] = dx_session_obj.server_session.last_job
        dx_session_obj.jobs[engine_name + 'snap'] = get_running_job(
            dx_session_obj.server_session, find_obj_by_name(
                dx_session_obj.server_session, database,
                arguments['--dsource_name']).reference)

    except (HttpError, RequestError, JobError) as e:
        print_exception('Database link failed for {}:\n{}\n'.format(
            arguments['--dsource_name'], e))
def create_ora_sourceconfig(engine_name, port_num=1521):
    """
    :param ip_addr:
    :param db_name:
    :return:
    """
    create_ret = None
    env_obj = find_obj_by_name(dx_session_obj.server_session, environment,
                               arguments['--env_name'])

    try:
        sourceconfig_ref = find_obj_by_name(dx_session_obj.server_session,
                                            sourceconfig,
                                            arguments['--db_name']).reference
    except DlpxException:
        sourceconfig_ref = None

    repo_ref = find_dbrepo(dx_session_obj.server_session,
                           'OracleInstall', env_obj.reference,
                           arguments['--db_install_path']).reference

    dsource_params = OracleSIConfig()

    connect_str = ('jdbc:oracle:thin:@' + arguments['--ip_addr'] + ':' +
                   str(port_num) + ':' + arguments['--db_name'])

    dsource_params.database_name = arguments['--db_name']
    dsource_params.unique_name = arguments['--db_name']
    dsource_params.repository = repo_ref
    dsource_params.instance = OracleInstance()
    dsource_params.instance.instance_name = arguments['--db_name']
    dsource_params.instance.instance_number = 1
    dsource_params.services = [{'type': 'OracleService',
                                'jdbcConnectionString': connect_str}]

    try:
        if sourceconfig_ref is None:
            create_ret = link_ora_dsource(sourceconfig.create(
                dx_session_obj.server_session, dsource_params),
                env_obj.primary_user)
        elif sourceconfig_ref is not None:
            create_ret = link_ora_dsource(sourceconfig_ref,
                                          env_obj.primary_user)

        print_info('Created and linked the dSource {} with reference {}.\n'.format(
              arguments['--db_name'], create_ret))
        link_job_ref = dx_session_obj.server_session.last_job
        link_job_obj = job.get(dx_session_obj.server_session,
                                      link_job_ref)
        while link_job_obj.job_state not in ["CANCELED", "COMPLETED", "FAILED"]:
          print_info('Waiting three seconds for link job to complete, and sync to begin')
          sleep(3)
          link_job_obj = job.get(dx_session_obj.server_session,
                                      link_job_ref)

        #Add the snapsync job to the jobs dictionary
        dx_session_obj.jobs[engine_name + 'snap'] = get_running_job(
            dx_session_obj.server_session, find_obj_by_name(
                dx_session_obj.server_session, database,
                arguments['--dsource_name']).reference)
        print_debug('Snapshot Job Reference: {}.\n'.format(
          dx_session_obj.jobs[engine_name + 'snap']))
    except (HttpError, RequestError) as e:
        print_exception('ERROR: Could not create the sourceconfig:\n'
                        '{}'.format(e))
        sys.exit(1)