def get(self, request, *args, **kwargs): compose_id = request.GET.get("compose_id", None) if not compose_id: return Response(general_message(400, "params error", "参数错误,请求参数应该包含compose ID"), status=400) group_compose = compose_service.get_group_compose_by_compose_id(compose_id) if group_compose: result = general_message(200, u"success", "获取成功", bean={"check_uuid": group_compose.check_uuid}) else: result = general_message(404, u"success", "compose不存在", bean={"check_uuid": ""}) return Response(result, status=200)
def get(self, request, *args, **kwargs): """ 获取compose文件检测信息 --- parameters: - name: tenantName description: 租户名 required: true type: string paramType: path - name: group_id description: 组ID required: true type: string paramType: path - name: check_uuid description: 检测id required: true type: string paramType: query - name: compose_id description: group_compose ID required: true type: string paramType: query """ sid = None try: check_uuid = request.GET.get("check_uuid", None) compose_id = request.GET.get("compose_id", None) if not check_uuid: return Response(general_message(400, "params error", "参数错误,请求参数应该包含请求的ID"), status=400) if not compose_id: return Response(general_message(400, "params error", "参数错误,请求参数应该包含compose ID"), status=400) group_compose = compose_service.get_group_compose_by_compose_id( compose_id) code, msg, data = app_check_service.get_service_check_info( self.tenant, self.response_region, check_uuid) logger.debug("start save compose info ! {0}".format( group_compose.create_status)) save_code, save_msg, service_list = compose_service.save_compose_services( self.tenant, self.user, self.response_region, group_compose, data) if save_code != 200: data["check_status"] = "failure" save_error = { "error_type": "check info save error", "solve_advice": "修改相关信息后重新尝试", "error_info": "{}".format(save_msg) } if data["error_infos"]: data["error_infos"].append(save_error) else: data["error_infos"] = [save_error] else: transaction.savepoint_commit(sid) compose_check_brief = compose_service.wrap_compose_check_info(data) result = general_message(200, "success", "请求成功", bean=compose_check_brief, list=[s.to_dict() for s in service_list]) except ResourceNotEnoughException as re: raise re except AccountOverdueException as re: logger.exception(re) return Response(general_message(10410, "resource is not enough", re.message), status=412) return Response(result, status=result["code"])
def post(self, request, *args, **kwargs): """ docker-compose组件检测 --- parameters: - name: tenantName description: 租户名 required: true type: string paramType: path - name: group_id description: 组ID required: true type: string paramType: path - name: compose_id description: group_compose ID required: true type: string paramType: form """ probe_map = dict() services = None try: compose_id = request.data.get("compose_id", None) if not compose_id: return Response(general_message(400, "params error", "参数异常"), status=400) group_compose = compose_service.get_group_compose_by_compose_id( compose_id) services = compose_service.get_compose_services(compose_id) # 数据中心创建组件 new_app_list = [] for service in services: new_service = app_service.create_region_service( self.tenant, service, self.user.nick_name) new_app_list.append(new_service) # 为组件添加默认探针 code, msg, probe = app_service.add_service_default_porbe( self.tenant, new_service) if probe: probe_map[service.service_id] = probe.probe_id # 添加组件有无状态标签 label_service.update_service_state_label( self.tenant, new_service) group_compose.create_status = "complete" group_compose.save() for s in new_app_list: try: app_manage_service.deploy(self.tenant, s, self.user, group_version=None) except Exception as e: logger.exception(e) continue result = general_message(200, "success", "构建成功") except Exception as e: logger.exception(e) result = error_message(e.message) # 删除probe # 删除region端数据 if services: for service in services: if probe_map: probe_id = probe_map.get(service.service_id) probe_service.delete_service_probe( self.tenant, service, probe_id) event_service.delete_service_events(service) port_service.delete_region_port(self.tenant, service) volume_service.delete_region_volumes(self.tenant, service) env_var_service.delete_region_env(self.tenant, service) dependency_service.delete_region_dependency( self.tenant, service) app_manage_service.delete_region_service( self.tenant, service) service.create_status = "checked" service.save() return Response(result, status=result["code"])