in backend/bms_app/services/operations/wave.py [0:0]
def _start_dms_pre_deployment_local(self, wave, operation, dms_mappings):
print('dms deployment started')
dms = DMS(project_id=settings.GCP_PROJECT_NAME, region="us-central1")
# TODO: do this async using operations callbacks
for mapping in dms_mappings:
config = self._get_dms_config(mapping.db)
source_conn_name = f'waverunner-source-{mapping.db.db_name}'
dest_conn_name = f'waverunner-target-for-{mapping.db.db_name}'
job_name = f'waverunner-{mapping.db.db_name}'
job_display_name = f'Waverunner job for {mapping.db.db_name}'
print(f'Source DB config: {config}')
def start_job(result):
logger.info('starting job...')
dms.start_migration_job(job_name)
def create_job(result):
logger.info('creating job...')
dms.create_migration_job(
name=job_name,
display_name=job_display_name,
source_conn=source_conn_name,
destination_conn=dest_conn_name
).add_done_callback(start_job)
def create_dest_connection(result):
logger.info('creating destination connection...')
dms.create_destination_connection_profile(
name=dest_conn_name,
source_conn_name=source_conn_name
).add_done_callback(create_job)
logger.info('creating source connection...')
dms.create_source_connection_profile(
name=source_conn_name,
host=mapping.db.server,
port=config['port'],
username=config['username'],
password=config['password']
).add_done_callback(create_dest_connection)