def get_export_status(self, enterprise_id, app, app_version): app_export_records = app_export_record_repo.get_enter_export_record_by_key_and_version( enterprise_id, app.app_id, app_version.version) rainbond_app_init_data = { "is_export_before": False, } docker_compose_init_data = { "is_export_before": False, } if app_export_records: for export_record in app_export_records: if not export_record.region_name: continue region = region_services.get_enterprise_region_by_region_name( enterprise_id, export_record.region_name) if not region: continue if export_record.event_id and export_record.status == "exporting": try: res, body = region_api.get_app_export_status( export_record.region_name, enterprise_id, export_record.event_id) result_bean = body["bean"] if result_bean["status"] in ("failed", "success"): export_record.status = result_bean["status"] export_record.file_path = result_bean["tar_file_href"] export_record.save() except Exception as e: logger.exception(e) if export_record.format == "rainbond-app": rainbond_app_init_data.update({ "is_export_before": True, "status": export_record.status, "file_path": self._wrapper_director_download_url( export_record.region_name, export_record.file_path.replace("/v2", "")) }) if export_record.format == "docker-compose": docker_compose_init_data.update({ "is_export_before": True, "status": export_record.status, "file_path": self._wrapper_director_download_url( export_record.region_name, export_record.file_path.replace("/v2", "")) }) result = { "rainbond_app": rainbond_app_init_data, "docker_compose": docker_compose_init_data } return result
def get_export_status(self, team, app): app_export_records = app_export_record_repo.get_enter_export_record_by_key_and_version( team.enterprise_id, app.group_key, app.version) rainbond_app_init_data = { "is_export_before": False, } docker_compose_init_data = { "is_export_before": False, } region = self.get_app_share_region(app) if region is None: return 404, '无法查找当前应用分享所在数据中心', None if app_export_records: for export_record in app_export_records: if export_record.event_id and export_record.status == "exporting": try: res, body = region_api.get_app_export_status( region, team.tenant_name, export_record.event_id) result_bean = body["bean"] if result_bean["status"] in ("failed", "success"): export_record.status = result_bean["status"] export_record.file_path = result_bean["tar_file_href"] export_record.save() except Exception as e: logger.exception(e) if export_record.format == "rainbond-app": rainbond_app_init_data.update({ "is_export_before": True, "status": export_record.status, "file_path": self._wrapper_director_download_url( region, export_record.file_path.replace("/v2", "")) }) if export_record.format == "docker-compose": docker_compose_init_data.update({ "is_export_before": True, "status": export_record.status, "file_path": self._wrapper_director_download_url( region, export_record.file_path.replace("/v2", "")) }) result = { "rainbond_app": rainbond_app_init_data, "docker_compose": docker_compose_init_data } return 200, "success", result
def get_export_record_status(self, enterprise_id, group_key, version): records = app_export_record_repo.get_enter_export_record_by_key_and_version(enterprise_id, group_key, version) # 有一个成功即成功,全部失败为失败,全部为导出中则显示导出中 if not records: return "unexported" failed = True for record in records: if record.status == "success": return "success" if record.status != "failed": failed = False if failed: return "failed" else: return "exporting"