Example #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
        """
        bean = dict()
        try:
            # status_map = app_service.get_service_status(self.tenant, self.service)
            # used_resource = app_service.get_service_resource_with_plugin(self.tenant, self.service,
            #                                                              status_map["status"])
            # service_abled_plugins = app_plugin_service.get_service_abled_plugin(self.service)
            # plugin_list = [p.to_dict() for p in service_abled_plugins]
            # bean.update(status_map)
            # bean.update(used_resource)
            # bean.update({"plugin_list": plugin_list})
            service_model = self.service.to_dict()
            group_map = group_service.get_services_group_name(
                [self.service.service_id])
            group_name = group_map.get(self.service.service_id)["group_name"]
            group_id = group_map.get(self.service.service_id)["group_id"]
            service_model["group_name"] = group_name
            service_model["group_id"] = group_id
            if self.service.service_source == AppConstants.DOCKER_COMPOSE:
                if self.service.create_status != "complete":
                    compose_service_relation = compose_service.get_service_compose_id(
                        self.service)
                    if compose_service_relation:
                        service_model[
                            "compose_id"] = compose_service_relation.compose_id
            bean.update({"service": service_model})
            tenant_actions = self.user.actions.tenant_actions
            bean.update({"tenant_actions": tenant_actions})
            service_actions = self.user.actions.service_actions
            bean.update({"service_actions": service_actions})

            event_websocket_url = ws_service.get_event_log_ws(
                self.request, self.response_region)
            # monitor_websocket_uri = ws_service.get_monitor_log_ws(self.request, self.response_region, self.tenant,
            #                                                       self.service)
            bean.update({"event_websocket_url": event_websocket_url})
            result = general_message(200, "success", "查询成功", bean=bean)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
Example #2
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
         - name: page
           description: 页码
           required: false
           type: string
           paramType: query
         - name: page_size
           description: 每页数量
           required: false
           type: string
           paramType: query
     """
     try:
         page_num = int(request.GET.get("page", 1))
         page_size = int(request.GET.get("page_size", 25))
         dependencies = dependency_service.get_service_dependencies(
             self.tenant, self.service)
         service_ids = [s.service_id for s in dependencies]
         service_group_map = group_service.get_services_group_name(
             service_ids)
         dep_list = []
         for dep in dependencies:
             dep_service_info = {
                 "service_cname": dep.service_cname,
                 "service_id": dep.service_id,
                 "service_type": dep.service_type,
                 "service_alias": dep.service_alias,
                 "group_name":
                 service_group_map[dep.service_id]["group_name"],
                 "group_id": service_group_map[dep.service_id]["group_id"]
             }
             dep_list.append(dep_service_info)
         rt_list = dep_list[(page_num - 1) * page_size:page_num * page_size]
         result = general_message(200,
                                  "success",
                                  "查询成功",
                                  list=rt_list,
                                  total=len(dep_list))
     except Exception as e:
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=result["code"])
Example #3
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:
         un_dependencies = dependency_service.get_undependencies(
             self.tenant, self.service)
         service_ids = [s.service_id for s in un_dependencies]
         service_group_map = group_service.get_services_group_name(
             service_ids)
         un_dep_list = []
         for un_dep in un_dependencies:
             dep_service_info = {
                 "service_cname":
                 un_dep.service_cname,
                 "service_id":
                 un_dep.service_id,
                 "service_type":
                 un_dep.service_type,
                 "service_alias":
                 un_dep.service_alias,
                 "group_name":
                 service_group_map[un_dep.service_id]["group_name"],
                 "group_id":
                 service_group_map[un_dep.service_id]["group_id"]
             }
             un_dep_list.append(dep_service_info)
         result = general_message(200, "success", "查询成功", list=un_dep_list)
     except Exception as e:
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=result["code"])
Example #4
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
        """
        bean = dict()
        try:
            # status_map = app_service.get_service_status(self.tenant, self.service)
            # used_resource = app_service.get_service_resource_with_plugin(self.tenant, self.service,
            #                                                              status_map["status"])
            # service_abled_plugins = app_plugin_service.get_service_abled_plugin(self.service)
            # plugin_list = [p.to_dict() for p in service_abled_plugins]
            # bean.update(status_map)
            # bean.update(used_resource)
            # bean.update({"plugin_list": plugin_list})
            service_model = self.service.to_dict()
            group_map = group_service.get_services_group_name(
                [self.service.service_id])
            group_name = group_map.get(self.service.service_id)["group_name"]
            group_id = group_map.get(self.service.service_id)["group_id"]
            service_model["group_name"] = group_name
            service_model["group_id"] = group_id
            bean.update({"service": service_model})
            tenant_actions = self.user.actions.tenant_actions
            bean.update({"tenant_actions": tenant_actions})
            service_actions = self.user.actions.service_actions
            bean.update({"service_actions": service_actions})
            event_websocket_url = ws_service.get_event_log_ws(
                self.request, self.service.service_region)
            bean.update({"event_websocket_url": event_websocket_url})
            if self.service.service_source == "market":
                service_source = service_source_repo.get_service_source(
                    self.tenant.tenant_id, self.service.service_id)
                if not service_source:
                    result = general_message(200, "success", "查询成功", bean=bean)
                    return Response(result, status=result["code"])
                rain_app = rainbond_app_repo.get_rainbond_app_by_key_and_version(
                    service_source.group_key, service_source.version)
                if not rain_app:
                    result = general_message(200,
                                             "success",
                                             "当前云市组件已删除",
                                             bean=bean)
                    return Response(result, status=result["code"])
                else:
                    bean.update({"rain_app_name": rain_app.group_name})
                    apps_template = json.loads(rain_app.app_template)
                    apps_list = apps_template.get("apps")
                    for app in apps_list:
                        if app["service_key"] == self.service.service_key:
                            if self.service.deploy_version and int(
                                    app["deploy_version"]) > int(
                                        self.service.deploy_version):
                                self.service.is_upgrate = True
                                self.service.save()
                                bean.update({"service": service_model})
                    try:
                        apps_template = json.loads(rain_app.app_template)
                        apps_list = apps_template.get("apps")
                        service_source = service_source_repo.get_service_source(
                            self.service.tenant_id, self.service.service_id)
                        if service_source and service_source.extend_info:
                            extend_info = json.loads(
                                service_source.extend_info)
                            if extend_info:
                                for app in apps_list:
                                    if "service_share_uuid" in app:
                                        if app["service_share_uuid"] == extend_info[
                                                "source_service_share_uuid"]:
                                            new_version = int(
                                                app["deploy_version"])
                                            old_version = int(extend_info[
                                                "source_deploy_version"])
                                            if new_version > old_version:
                                                self.service.is_upgrate = True
                                                self.service.save()
                                                service_model[
                                                    "is_upgrade"] = True
                                                bean.update(
                                                    {"service": service_model})
                                    elif "service_share_uuid" not in app and "service_key" in app:
                                        if app["service_key"] == extend_info[
                                                "source_service_share_uuid"]:
                                            new_version = int(
                                                app["deploy_version"])
                                            old_version = int(extend_info[
                                                "source_deploy_version"])
                                            if new_version > old_version:
                                                self.service.is_upgrate = True
                                                self.service.save()
                                                service_model[
                                                    "is_upgrade"] = True
                                                bean.update(
                                                    {"service": service_model})

                    except Exception as e:
                        logger.exception(e)

            if self.service.service_source == AppConstants.DOCKER_COMPOSE:
                if self.service.create_status != "complete":
                    compose_service_relation = compose_service.get_service_compose_id(
                        self.service)
                    if compose_service_relation:
                        service_model[
                            "compose_id"] = compose_service_relation.compose_id
                        bean.update({"service": service_model})
            bean["is_third"] = False
            if self.service.service_source == "third_party":
                bean["is_third"] = True
                service_endpoints = service_endpoints_repo.get_service_endpoints_by_service_id(
                    self.service.service_id)
                if service_endpoints:
                    bean["register_way"] = service_endpoints.endpoints_type
                    if service_endpoints.endpoints_type == "api":
                        # 从环境变量中获取域名,没有在从请求中获取
                        host = os.environ.get('DEFAULT_DOMAIN',
                                              request.get_host())
                        bean["api_url"] = "http://" + host + "/console/" + \
                            "third_party/{0}".format(self.service.service_id)
                        key_repo = deploy_repo.get_service_key_by_service_id(
                            service_id=self.service.service_id)
                        if key_repo:
                            bean["api_service_key"] = pickle.loads(
                                base64.b64decode(
                                    key_repo.secret_key)).get("secret_key")
                    if service_endpoints.endpoints_type == "discovery":
                        # 返回类型和key
                        endpoints_info_dict = json.loads(
                            service_endpoints.endpoints_info)

                        bean["discovery_type"] = endpoints_info_dict["type"]
                        bean["discovery_key"] = endpoints_info_dict["key"]

            result = general_message(200, "success", "查询成功", bean=bean)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
Example #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
            - name: page
              description: 页码
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页数量
              required: false
              type: string
              paramType: query
            - name: search_key
              description: 搜索关键字
              required: false
              type: string
              paramType: query
            - name: condition
              description: 模糊搜索条件,按组名还是按组件名 group_name|service_name
              required: false
              type: string
              paramType: query
        """
        try:
            page_num = int(request.GET.get("page", 1))
            page_size = int(request.GET.get("page_size", 25))
            search_key = request.GET.get("search_key", None)
            condition = request.GET.get("condition", None)
            un_dependencies = dependency_service.get_undependencies(
                self.tenant, self.service)
            service_ids = [s.service_id for s in un_dependencies]
            service_group_map = group_service.get_services_group_name(
                service_ids)
            un_dep_list = []
            for un_dep in un_dependencies:
                dep_service_info = {
                    "service_cname":
                    un_dep.service_cname,
                    "service_id":
                    un_dep.service_id,
                    "service_type":
                    un_dep.service_type,
                    "service_alias":
                    un_dep.service_alias,
                    "group_name":
                    service_group_map[un_dep.service_id]["group_name"],
                    "group_id":
                    service_group_map[un_dep.service_id]["group_id"]
                }

                if search_key is not None and condition:
                    if condition == "group_name":
                        if search_key.lower() in service_group_map[
                                un_dep.service_id]["group_name"].lower():
                            un_dep_list.append(dep_service_info)
                    elif condition == "service_name":
                        if search_key.lower() in un_dep.service_cname.lower():
                            un_dep_list.append(dep_service_info)
                    else:
                        result = general_message(400, "error",
                                                 u"condition参数错误")
                        return Response(result, status=400)
                elif search_key is not None and not condition:
                    if search_key.lower() in service_group_map[
                            un_dep.service_id]["group_name"].lower(
                            ) or search_key.lower(
                            ) in un_dep.service_cname.lower():
                        un_dep_list.append(dep_service_info)
                elif search_key is None and not condition:
                    un_dep_list.append(dep_service_info)

            rt_list = un_dep_list[(page_num - 1) * page_size:page_num *
                                  page_size]
            result = general_message(200,
                                     "success",
                                     "查询成功",
                                     list=rt_list,
                                     total=len(un_dep_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
            - name: page
              description: 页码
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页数量
              required: false
              type: string
              paramType: query
        """
        page_num = int(request.GET.get("page", 1))
        page_size = int(request.GET.get("page_size", 25))
        dependencies = dependency_service.get_service_dependencies(
            self.tenant, self.service)
        service_ids = [s.service_id for s in dependencies]
        service_group_map = group_service.get_services_group_name(service_ids)
        dep_list = []
        for dep in dependencies:
            tenant_service_ports = port_service.get_service_ports(dep)
            ports_list = []
            if tenant_service_ports:
                for port in tenant_service_ports:
                    ports_list.append(port.container_port)
            dep_service_info = {
                "service_cname": dep.service_cname,
                "service_id": dep.service_id,
                "service_type": dep.service_type,
                "service_alias": dep.service_alias,
                "group_name": service_group_map[dep.service_id]["group_name"],
                "group_id": service_group_map[dep.service_id]["group_id"],
                "ports_list": ports_list
            }
            dep_list.append(dep_service_info)
        rt_list = dep_list[(page_num - 1) * page_size:page_num * page_size]

        service_ports = port_service.get_service_ports(self.service)
        port_list = []
        if service_ports:
            for port in service_ports:
                port_list.append(port.container_port)
        bean = {"port_list": port_list}
        result = general_message(200,
                                 "success",
                                 "查询成功",
                                 list=rt_list,
                                 total=len(dep_list),
                                 bean=bean)
        return Response(result, status=result["code"])
Example #7
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
     """
     bean = dict()
     try:
         # status_map = app_service.get_service_status(self.tenant, self.service)
         # used_resource = app_service.get_service_resource_with_plugin(self.tenant, self.service,
         #                                                              status_map["status"])
         # service_abled_plugins = app_plugin_service.get_service_abled_plugin(self.service)
         # plugin_list = [p.to_dict() for p in service_abled_plugins]
         # bean.update(status_map)
         # bean.update(used_resource)
         # bean.update({"plugin_list": plugin_list})
         service_model = self.service.to_dict()
         group_map = group_service.get_services_group_name(
             [self.service.service_id])
         group_name = group_map.get(self.service.service_id)["group_name"]
         group_id = group_map.get(self.service.service_id)["group_id"]
         service_model["group_name"] = group_name
         service_model["group_id"] = group_id
         bean.update({"service": service_model})
         tenant_actions = self.user.actions.tenant_actions
         bean.update({"tenant_actions": tenant_actions})
         service_actions = self.user.actions.service_actions
         bean.update({"service_actions": service_actions})
         event_websocket_url = ws_service.get_event_log_ws(
             self.request, self.service.service_region)
         bean.update({"event_websocket_url": event_websocket_url})
         if self.service.service_source == "market":
             group_obj = tenant_service_group_repo.get_group_by_service_group_id(
                 self.service.tenant_service_group_id)
             if not group_obj:
                 result = general_message(200, "success", "查询成功", bean=bean)
                 return Response(result, status=result["code"])
             rain_app = rainbond_app_repo.get_rainbond_app_by_key_and_version(
                 group_obj.group_key, group_obj.group_version)
             if not rain_app:
                 result = general_message(200,
                                          "success",
                                          "当前云市应用已删除",
                                          bean=bean)
                 return Response(result, status=result["code"])
             else:
                 apps_template = json.loads(rain_app.app_template)
                 apps_list = apps_template.get("apps")
                 for app in apps_list:
                     if app["service_key"] == self.service.service_key:
                         if app["deploy_version"] > self.service.deploy_version:
                             self.service.is_upgrate = True
                             self.service.save()
                             bean.update({"service": service_model})
         if self.service.service_source == AppConstants.DOCKER_COMPOSE:
             if self.service.create_status != "complete":
                 compose_service_relation = compose_service.get_service_compose_id(
                     self.service)
                 if compose_service_relation:
                     service_model[
                         "compose_id"] = compose_service_relation.compose_id
                     bean.update({"service": service_model})
         result = general_message(200, "success", "查询成功", bean=bean)
     except Exception as e:
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=result["code"])