def get(self, request, *args, **kwargs): """ 获取服务的持久化路径 --- parameters: - name: tenantName description: 租户名 required: true type: string paramType: path - name: serviceAlias description: 服务别名 required: true type: string paramType: path """ try: tenant_service_volumes = volume_service.get_service_volumes( self.tenant, self.service) volumes = [ model_to_dict(volume) for volume in tenant_service_volumes ] result = general_message(200, "success", "查询成功", list=volumes) except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=result["code"])
def put(self, request, *args, **kwargs): """ 修改服务的应用类型标签 :param request: :param args: :param kwargs: :return: """ try: extend_method = request.data.get("extend_method", None) if not extend_method: return Response(general_message(400, "select the application type", "请选择应用类型"), status=400) old_extend_method = self.service.extend_method # 状态从有到无,并且有本地存储的不可修改 is_mnt_dir = 0 tenant_service_volumes = volume_service.get_service_volumes(self.tenant, self.service) if tenant_service_volumes: for tenant_service_volume in tenant_service_volumes: if tenant_service_volume.volume_type == "local": is_mnt_dir = 1 if old_extend_method != "stateless" and extend_method == "stateless" and is_mnt_dir: return Response( general_message( 400, "local storage cannot be modified to be stateless", "本地存储不可修改为无状态"), status=400) deploy_type_service.put_service_deploy_type(self.tenant, self.service, extend_method) result = general_message(200, "success", "操作成功") except CallRegionAPIException as e: result = general_message(e.code, "failure", e.message) return Response(result, status=result["code"])
def put(self, request, *args, **kwargs): """ 修改服务的应用类型标签 :param request: :param args: :param kwargs: :return: """ try: extend_method = request.data.get("extend_method", None) if not extend_method: return Response(general_message(400, "select the application type", "请选择应用类型"), status=400) old_extend_method = self.service.extend_method # 状态从有到无,并且有本地存储的不可修改 is_mnt_dir = 0 tenant_service_volumes = volume_service.get_service_volumes( self.tenant, self.service) if tenant_service_volumes: for tenant_service_volume in tenant_service_volumes: if tenant_service_volume.volume_type == "local": is_mnt_dir = 1 if old_extend_method != "stateless" and extend_method == "stateless" and is_mnt_dir: return Response(general_message( 400, "local storage cannot be modified to be stateless", "本地存储不可修改为无状态"), status=400) label_dict = dict() body = dict() # made ... body["label_key"] = "service-type" body[ "label_value"] = "StatelessServiceType" if extend_method == "stateless" else "StatefulServiceType" label_list = list() label_list.append(body) label_dict["labels"] = label_list logger.debug('---------------label_dict------------->{0}'.format( label_dict)) res, body = region_api.update_service_state_label( self.service.service_region, self.tenant.tenant_name, self.service.service_alias, label_dict) if int(res.status) != 200: result = general_message(500, "region faild", "数据中心请求失败") return Response(result, status=500) self.service.extend_method = extend_method self.service.save() result = general_message(200, "success", "操作成功") except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=result["code"])
def get(self, request, *args, **kwargs): """ 获取服务的持久化路径 --- parameters: - name: tenantName description: 租户名 required: true type: string paramType: path - name: serviceAlias description: 服务别名 required: true type: string paramType: path """ volume_types = parse_argument(request, 'volume_types', value_type=list) try: q = Q(volume_type__in=volume_types) if volume_types else Q() tenant_service_volumes = volume_service.get_service_volumes( self.tenant, self.service).filter(q) volumes_list = [] if tenant_service_volumes: for tenant_service_volume in tenant_service_volumes: volume_dict = dict() volume_dict[ "service_id"] = tenant_service_volume.service_id volume_dict["category"] = tenant_service_volume.category volume_dict["host_path"] = tenant_service_volume.host_path volume_dict[ "volume_type"] = tenant_service_volume.volume_type volume_dict[ "volume_path"] = tenant_service_volume.volume_path volume_dict[ "volume_name"] = tenant_service_volume.volume_name volume_dict["ID"] = tenant_service_volume.ID if tenant_service_volume.volume_type == "config-file": cf_file = volume_repo.get_service_config_file( tenant_service_volume.ID) if cf_file: volume_dict["file_content"] = cf_file.file_content volumes_list.append(volume_dict) result = general_message(200, "success", "查询成功", list=volumes_list) except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=result["code"])
def get(self, request, *args, **kwargs): """ 获取组件的持久化路径 --- parameters: - name: tenantName description: 租户名 required: true type: string paramType: path - name: serviceAlias description: 组件别名 required: true type: string paramType: path """ is_config = parse_argument(request, 'is_config', value_type=bool, default=False) volumes = volume_service.get_service_volumes(self.tenant, self.service, is_config) volumes_list = [] if is_config: for tenant_service_volume in volumes: volume = volume_repo.get_service_volume_by_pk( tenant_service_volume["ID"]) cf_file = volume_repo.get_service_config_file(volume) if cf_file: tenant_service_volume[ "file_content"] = cf_file.file_content volumes_list.append(tenant_service_volume) else: dependents = mnt_service.get_volume_dependent( self.tenant, self.service) name2deps = {} if dependents: for dep in dependents: if name2deps.get(dep["volume_name"], None) is None: name2deps[dep["volume_name"]] = [] name2deps[dep["volume_name"]].append(dep) for vo in volumes: vo["dep_services"] = name2deps.get(vo["volume_name"], None) volumes_list.append(vo) result = general_message(200, "success", "查询成功", list=volumes_list) return Response(result, status=result["code"])