コード例 #1
0
 def get(self, request, *args, **kwargs):
     """
     获取compose组下的应用
     ---
     parameters:
         - name: tenantName
           description: 租户名
           required: true
           type: string
           paramType: path
         - name: compose_id
           description: 组ID
           required: true
           type: string
           paramType: path
     """
     try:
         services = compose_service.get_compose_services(
             self.group_compose.compose_id)
         s_list = [s.to_dict() for s in services]
         result = general_message(200, "success", "查询成功", list=s_list)
     except Exception as e:
         logger.exception(e)
         result = error_message("{0}".format(e))
     return Response(result, status=result["code"])
コード例 #2
0
    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"])