def start_import_apps(self, scope, event_id, file_names, team_name=None, enterprise_id=None): import_record = app_import_record_repo.get_import_record_by_event_id( event_id) if not import_record: raise RecordNotFound("import_record not found") import_record.scope = scope if team_name: import_record.team_name = team_name service_image = app_store.get_app_hub_info(enterprise_id=enterprise_id) data = { "service_image": service_image, "event_id": event_id, "apps": file_names } if scope == "enterprise": region_api.import_app_2_enterprise(import_record.region, import_record.enterprise_id, data) else: res, body = region_api.import_app(import_record.region, team_name, data) import_record.status = "importing" import_record.save()
def get_and_update_import_status(self, tenant, region, event_id): """获取并更新导入状态""" import_record = app_import_record_repo.get_import_record_by_event_id( event_id) # 去数据中心请求导入状态 res, body = region_api.get_app_import_status(region, tenant.tenant_name, event_id) status = body["bean"]["status"] if import_record.status != "success": if status == "success": logger.debug("app import success !") self.__save_import_info(tenant.tenant_name, import_record.scope, body["bean"]["metadata"]) import_record.source_dir = body["bean"]["source_dir"] import_record.format = body["bean"]["format"] import_record.status = "success" import_record.save() else: import_record.status = status import_record.save() apps_status = self.__wrapp_app_import_status(body["bean"]["apps"]) return import_record, apps_status
def delete_import_app_dir_by_event_id(self, event_id): try: import_record = app_import_record_repo.get_import_record_by_event_id(event_id) region_api.delete_enterprise_import(import_record.region, import_record.enterprise_id, event_id) except Exception as e: logger.exception(e) app_import_record_repo.delete_by_event_id(event_id)
def get_import_app_dir(self, event_id): """获取应用目录下的包""" import_record = app_import_record_repo.get_import_record_by_event_id(event_id) if not import_record: raise RecordNotFound("import_record not found") res, body = region_api.get_enterprise_import_file_dir(import_record.region, import_record.enterprise_id, event_id) app_tars = body["bean"]["apps"] return app_tars
def get_and_update_import_status(self, tenant, region, event_id): """获取并更新导入状态""" import_record = app_import_record_repo.get_import_record_by_event_id( event_id) if not import_record: raise RecordNotFound("import_record not found") # 去数据中心请求导入状态 res, body = region_api.get_app_import_status(region, tenant.tenant_name, event_id) status = body["bean"]["status"] if import_record.status != "success": if status == "success": logger.debug("app import success !") self.__save_import_info(tenant, import_record.scope, body["bean"]["metadata"]) import_record.source_dir = body["bean"]["source_dir"] import_record.format = body["bean"]["format"] import_record.status = "success" import_record.save() # 成功以后删除数据中心目录数据 try: region_api.delete_import_file_dir(region, tenant.tenant_name, event_id) except Exception as e: logger.exception(e) else: import_record.status = status import_record.save() apps_status = self.__wrapp_app_import_status(body["bean"]["apps"]) failed_num = 0 success_num = 0 for i in apps_status: if i.get("status") == "success": success_num += 1 import_record.status = "partial_success" import_record.save() elif i.get("status") == "failed": failed_num += 1 if success_num == len(apps_status): import_record.status = "success" import_record.save() elif failed_num == len(apps_status): import_record.status = "failed" import_record.save() if status == "uploading": import_record.status = status import_record.save() return import_record, apps_status
def start_import_apps(self, tenant, region, scope, event_id, file_names): import_record = app_import_record_repo.get_import_record_by_event_id(event_id) import_record.scope = scope service_slug = app_store.get_slug_connection_info(scope, tenant.tenant_name) service_image = app_store.get_image_connection_info(scope, tenant.tenant_name) data = { "service_slug": service_slug, "service_image": service_image, "event_id": event_id, "apps": file_names } logger.debug("params {0}".format(json.dumps(data))) res, body = region_api.import_app(region, tenant.tenant_name, data) logger.debug("response body {0}".format(body)) import_record.status = "importing" import_record.save()