def _task_process(ctxt, task_id, task_type, origin, destination, instance, task_info, mp_q, mp_log_q): try: _setup_task_process(mp_log_q) if task_type == constants.TASK_TYPE_EXPORT_INSTANCE: provider_type = constants.PROVIDER_TYPE_EXPORT data = origin elif task_type == constants.TASK_TYPE_IMPORT_INSTANCE: provider_type = constants.PROVIDER_TYPE_IMPORT data = destination else: raise exception.NotFound( "Unknown task type: %s" % task_type) event_handler = _ConductorProviderEventHandler(ctxt, task_id) provider = factory.get_provider(data["type"], provider_type, event_handler) connection_info = data.get("connection_info") or {} target_environment = data.get("target_environment") or {} secret_ref = connection_info.get("secret_ref") if secret_ref: LOG.info("Retrieving connection info from secret: %s", secret_ref) connection_info = secrets.get_secret(ctxt, secret_ref) if provider_type == constants.PROVIDER_TYPE_EXPORT: export_path = _get_task_export_path(task_id, create=True) result = provider.export_instance(ctxt, connection_info, instance, export_path) result[TMP_DIRS_KEY] = [export_path] else: result = provider.import_instance(ctxt, connection_info, target_environment, instance, task_info) mp_q.put(result) except Exception as ex: mp_q.put(str(ex)) LOG.exception(ex) finally: # Signal the log event handler that there are no more events mp_log_q.put(None)
def _task_process(ctxt, task_id, task_type, origin, destination, instance, task_info, mp_q, mp_log_q): try: _setup_task_process(mp_log_q) if task_type == constants.TASK_TYPE_EXPORT_INSTANCE: provider_type = constants.PROVIDER_TYPE_EXPORT data = origin elif task_type == constants.TASK_TYPE_IMPORT_INSTANCE: provider_type = constants.PROVIDER_TYPE_IMPORT data = destination else: raise exception.NotFound("Unknown task type: %s" % task_type) event_handler = _ConductorProviderEventHandler(ctxt, task_id) provider = factory.get_provider(data["type"], provider_type, event_handler) connection_info = data.get("connection_info") or {} target_environment = data.get("target_environment") or {} secret_ref = connection_info.get("secret_ref") if secret_ref: LOG.info("Retrieving connection info from secret: %s", secret_ref) connection_info = secrets.get_secret(ctxt, secret_ref) if provider_type == constants.PROVIDER_TYPE_EXPORT: export_path = _get_task_export_path(task_id, create=True) result = provider.export_instance(ctxt, connection_info, instance, export_path) result[TMP_DIRS_KEY] = [export_path] else: result = provider.import_instance(ctxt, connection_info, target_environment, instance, task_info) mp_q.put(result) except Exception as ex: mp_q.put(str(ex)) LOG.exception(ex) finally: # Signal the log event handler that there are no more events mp_log_q.put(None)
def get_secret_connection_info(ctxt, connection_info): secret_ref = connection_info.get("secret_ref") if secret_ref: LOG.info("Retrieving connection info from secret: %s", secret_ref) connection_info = secrets.get_secret(ctxt, secret_ref) return connection_info