Exemple #1
0
    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"])
Exemple #3
0
    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"])
Exemple #5
0
    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"])