def _start_dms_pre_deployment_local()

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)