Beispiel #1
0
 def save_service_info(self, tenant, service, check_service_info):
     service_info = check_service_info
     service.language = service_info.get("language", "")
     memory = service_info.get("memory", 128)
     min_cpu = common_services.calculate_cpu(service.service_region, memory)
     service.min_memory = memory - memory % 32
     service.min_cpu = min_cpu
     # Set the deployment type based on the test results
     logger.debug("save svc extend_method {0}".format(
         service_info.get("service_type",
                          ComponentType.stateless_multiple.value)))
     service.extend_method = service_info.get(
         "service_type", ComponentType.stateless_multiple.value)
     args = service_info.get("args", None)
     if args:
         service.cmd = " ".join(args)
     else:
         service.cmd = ""
     image = service_info.get("image", None)
     if image:
         service_image = image["name"] + ":" + image["tag"]
         service.image = service_image
         service.version = image["tag"]
     envs = service_info.get("envs", None)
     ports = service_info.get("ports", None)
     volumes = service_info.get("volumes", None)
     service_runtime_os = service_info.get("os", "linux")
     if service_runtime_os == "windows":
         label_service.set_service_os_label(tenant, service,
                                            service_runtime_os)
     self.__save_compile_env(tenant, service, service.language)
     # save env
     self.__save_env(tenant, service, envs)
     self.__save_port(tenant, service, ports)
     self.__save_volume(tenant, service, volumes)
Beispiel #2
0
    def save_service_info(self, tenant, service, check_service_info):
        service_info = check_service_info
        service.language = service_info["language"]
        memory = service_info.get("memory", 128)
        min_cpu = common_services.calculate_cpu(service.service_region, memory)
        service.min_memory = memory
        service.min_cpu = min_cpu
        args = service_info.get("args", None)
        if args:
            service.cmd = " ".join(args)
        else:
            service.cmd = ""
        image = service_info.get("image", None)
        if image:
            service_image = image["name"] + ":" + image["tag"]
            service.image = service_image
            service.version = image["tag"]

        library = service_info.get("dependencies", False)
        procfile = service_info.get("procfile", False)
        runtime = service_info.get("runtime", False)

        envs = service_info["envs"]
        ports = service_info["ports"]
        volumes = service_info["volumes"]

        code, msg = self.__save_compile_env(tenant, service,
                                            service_info["language"], library,
                                            runtime, procfile)
        if code != 200:
            return code, msg

        # 先保存env,再保存端口,因为端口需要处理env
        code, msg = self.__save_env(tenant, service, envs)
        if code != 200:
            return code, msg

        code, msg = self.__save_port(tenant, service, ports)
        if code != 200:
            return code, msg

        code, msg = self.__save_volume(tenant, service, volumes)
        if code != 200:
            return code, msg
        return 200, "success"
Beispiel #3
0
    def save_service_info(self, tenant, service, check_service_info):
        service_info = check_service_info
        service.language = service_info.get("language", "")
        memory = service_info.get("memory", 128)
        min_cpu = common_services.calculate_cpu(service.service_region, memory)
        service.min_memory = memory
        service.min_cpu = min_cpu
        # Set the deployment type based on the test results
        service.extend_method = "state" if service_info[
            "deploy_type"] == "StatefulServiceType" else "stateless"
        args = service_info.get("args", None)
        if args:
            service.cmd = " ".join(args)
        else:
            service.cmd = ""
        image = service_info.get("image", None)
        if image:
            service_image = image["name"] + ":" + image["tag"]
            service.image = service_image
            service.version = image["tag"]

        envs = service_info.get("envs", None)
        ports = service_info.get("ports", None)
        volumes = service_info.get("volumes", None)

        code, msg = self.__save_compile_env(tenant, service, service.language)
        if code != 200:
            return code, msg

        # 先保存env,再保存端口,因为端口需要处理env
        code, msg = self.__save_env(tenant, service, envs)
        if code != 200:
            return code, msg
        code, msg = self.__save_port(tenant, service, ports)
        if code != 200:
            return code, msg

        code, msg = self.__save_volume(tenant, service, volumes)
        if code != 200:
            return code, msg
        return 200, "success"
    def put(self, request, plugin_id, *args, **kwargs):
        """
        启停用应用插件
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path
            - name: plugin_id
              description: 插件ID
              required: true
              type: string
              paramType: path
            - name: is_switch
              description: 插件启停状态
              required: false
              type: boolean
              paramType: form
            - name: min_memory
              description: 插件内存
              required: false
              type: boolean
              paramType: form
        """
        try:
            if not plugin_id:
                return Response(general_message(400, "params error", "参数异常"), status=400)
            is_active = request.data.get("is_switch", True)
            service_plugin_relation = app_plugin_service.get_service_plugin_relation(self.service.service_id, plugin_id)
            if not service_plugin_relation:
                return Response(general_message(404, "params error", "未找到关联插件的构建版本"), status=404)
            else:
                build_version = service_plugin_relation.build_version
            pbv = plugin_version_service.get_by_id_and_version(plugin_id,build_version)
            # 更新内存和cpu
            min_memory = request.data.get("min_memory", pbv.min_memory)
            min_cpu = common_services.calculate_cpu(self.service.service_region, min_memory)

            data = dict()
            data["plugin_id"] = plugin_id
            data["switch"] = is_active
            data["version_id"] = build_version
            data["plugin_memory"] = min_memory
            data["plugin_cpu"] = min_cpu
            # 更新数据中心数据参数
            region_api.update_plugin_service_relation(self.response_region, self.tenant.tenant_name,
                                                      self.service.service_alias, data)
            # 更新本地数据
            app_plugin_service.start_stop_service_plugin(self.service.service_id, plugin_id, is_active)
            pbv.min_memory = min_memory
            pbv.min_cpu = min_cpu
            pbv.save()
            result = general_message(200, "success", "操作成功")
        except Exception, e:
            logger.exception(e)
            result = error_message(e.message)
    def put(self, request, plugin_id, *args, **kwargs):
        """
        启停用组件插件
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 组件别名
              required: true
              type: string
              paramType: path
            - name: plugin_id
              description: 插件ID
              required: true
              type: string
              paramType: path
            - name: is_switch
              description: 插件启停状态
              required: false
              type: boolean
              paramType: form
            - name: min_memory
              description: 插件内存
              required: false
              type: boolean
              paramType: form
        """
        if not plugin_id:
            return Response(general_message(400, "not found plugin_id",
                                            "参数异常"),
                            status=400)
        is_active = request.data.get("is_switch", True)
        service_plugin_relation = app_plugin_service.get_service_plugin_relation(
            self.service.service_id, plugin_id)
        if not service_plugin_relation:
            return Response(general_message(404, "not found plugin relation",
                                            "未找到组件使用的插件"),
                            status=404)
        else:
            build_version = service_plugin_relation.build_version
        pbv = plugin_version_service.get_by_id_and_version(
            self.tenant.tenant_id, plugin_id, build_version)
        # 更新内存和cpu
        memory = request.data.get("min_memory", pbv.min_memory)
        cpu = common_services.calculate_cpu(self.service.service_region,
                                            memory)

        data = dict()
        data["plugin_id"] = plugin_id
        data["switch"] = is_active
        data["version_id"] = build_version
        data["plugin_memory"] = int(memory)
        data["plugin_cpu"] = int(cpu)
        # 更新数据中心数据参数
        region_api.update_plugin_service_relation(self.response_region,
                                                  self.tenant.tenant_name,
                                                  self.service.service_alias,
                                                  data)
        # 更新本地数据
        app_plugin_service.start_stop_service_plugin(self.service.service_id,
                                                     plugin_id, is_active, cpu,
                                                     memory)
        result = general_message(200, "success", "操作成功")
        return Response(result, status=result["code"])