Exemple #1
0
 def post(self, request, tenantName, group_id, *args, **kwargs):
     """
     应用复制
     ---
     parameters:
         - name: tenantName
           description: 团队名称
           required: true
           type: string
           paramType: path
         - name: group_id
           description: 应用id
           required: true
           type: int
           paramType: path
     """
     services = request.data.get("services")
     tar_team_name = request.data.get("tar_team_name")
     tar_region_name = request.data.get("tar_region_name")
     tar_group_id = request.data.get("tar_group_id")
     if not tar_team_name or not tar_region_name or not tar_group_id:
         raise ServiceHandleException(
             msg_show="缺少复制目标参数",
             msg="not found copy target parameters",
             status_code=404)
     tar_team, tar_group = groupapp_copy_service.check_and_get_team_group(
         request.user, tar_team_name, tar_region_name, tar_group_id)
     try:
         groupapp_copy_service.copy_group_services(
             request.user, self.tenant, self.region_name, tar_team,
             tar_region_name, tar_group, group_id, services)
         result = general_message(200,
                                  "success",
                                  "获取成功",
                                  bean={
                                      "tar_team_name": tar_team_name,
                                      "tar_region_name": tar_region_name,
                                      "tar_group_id": tar_group_id
                                  })
         status = 200
     except HttpClient.CallApiError as e:
         logger.exception(e)
         if e.status == 403:
             result = general_message(10407, "no cloud permission",
                                      e.message)
             status = e.status
         elif e.status == 400:
             if "is exist" in e.message.get("body", ""):
                 result = general_message(400,
                                          "the service is exist in region",
                                          "组件名称在数据中心已存在")
             else:
                 result = general_message(400, "call cloud api failure",
                                          e.message)
             status = e.status
         else:
             result = general_message(500, "call cloud api failure",
                                      e.message)
             status = 500
     return Response(result, status=status)
Exemple #2
0
 def post(self, request, team_id, app_id, *args, **kwargs):
     """
     应用复制
     ---
     parameters:
         - name: tenantName
           description: 团队名称
           required: true
           type: string
           paramType: path
         - name: app_id
           description: 应用id
           required: true
           type: int
           paramType: path
     """
     serializers = AppCopyCSerializer(data=request.data)
     serializers.is_valid(raise_exception=True)
     services = serializers.data.get("services")
     tar_team_name = request.data.get("target_team_name")
     tar_region_name = request.data.get("target_region_name")
     tar_app_id = request.data.get("target_app_id")
     tar_team, tar_group = groupapp_copy_service.check_and_get_team_group(request.user, tar_team_name, tar_region_name,
                                                                          tar_app_id)
     services = groupapp_copy_service.copy_group_services(request.user, self.team, self.region_name, tar_team,
                                                          tar_region_name, tar_group, app_id, services)
     services = ServiceBaseInfoSerializer(data=services, many=True)
     services.is_valid()
     serializers = AppCopyCResSerializer(data={"services": services.data})
     serializers.is_valid()
     return Response(serializers.data, status=200)
Exemple #3
0
 def post(self, request, team_id, group_id, *args, **kwargs):
     """
     应用复制
     ---
     parameters:
         - name: tenantName
           description: 团队名称
           required: true
           type: string
           paramType: path
         - name: group_id
           description: 应用id
           required: true
           type: int
           paramType: path
     """
     serializers = GroupAppCopyCSerializer(data=request.data)
     serializers.is_valid(raise_exception=True)
     services = serializers.data.get("services")
     tar_team_name = request.data.get("tar_team_name")
     tar_region_name = request.data.get("tar_region_name")
     tar_group_id = request.data.get("tar_group_id")
     if not self.team:
         return Response({"msg": "应用所在团队不存在"}, status=404)
     tar_team, tar_group = groupapp_copy_service.check_and_get_team_group(
         request.user, tar_team_name, tar_region_name, tar_group_id)
     groupapp_copy_service.copy_group_services(request.user, self.team,
                                               tar_team, tar_region_name,
                                               tar_group, group_id,
                                               services)
     domain = request.META.get(
         "wsgi.url_scheme") + "://" + request.META.get("HTTP_HOST")
     group_app_url = "/".join([
         domain, "#/team", tar_team_name, "region", tar_region_name, "apps",
         str(tar_group_id)
     ])
     serializers = GroupAppCopyCResSerializer(
         data={"group_app_url": group_app_url})
     serializers.is_valid(raise_exception=True)
     return Response(serializers.data, status=200)