Ejemplo n.º 1
0
 def put(self, request, enterprise_id, market_name, *args, **kwargs):
     _, market_model = app_market_service.get_app_market(enterprise_id, market_name, raise_exception=True)
     request.data["enterprise_id"] = enterprise_id
     request.data["market_name"] = market_name
     new_market = app_market_service.update_app_market(market_model, request.data)
     result = general_message(200, "success", None, list=new_market.to_dict())
     return Response(result, status=200)
Ejemplo n.º 2
0
 def get(self, request, enterprise_id, market_name, *args, **kwargs):
     extend = request.GET.get("extend", "false")
     market, _ = app_market_service.get_app_market(enterprise_id,
                                                   market_name,
                                                   extend,
                                                   raise_exception=True)
     result = general_message(200, "success", None, list=market)
     return Response(result, status=200)
Ejemplo n.º 3
0
 def post(self, request, app_id, *args, **kwargs):
     is_deploy = request.GET.get("is_deploy", False)
     if is_deploy == "true":
         is_deploy = True
     serializer = InstallSerializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     market_url = serializer.data.get("market_url")
     market_domain = serializer.data.get("market_domain")
     market_type = serializer.data.get("market_type")
     market_access_key = serializer.data.get("market_access_key")
     app_model_id = serializer.data.get("app_model_id")
     app_model_version = serializer.data.get("app_model_version")
     market = app_market_service.get_app_market_by_domain_url(
         self.team.enterprise_id, market_domain, market_url)
     if not market:
         market_name = make_uuid()
         dt = {
             "name": market_name,
             "url": market_url,
             "type": market_type,
             "enterprise_id": self.team.enterprise_id,
             "access_key": market_access_key,
             "domain": market_domain,
         }
         app_market_service.create_app_market(dt)
         dt, market = app_market_service.get_app_market(
             self.team.enterprise_id, market_name, raise_exception=True)
     market_name = market.name
     app, app_version_info = app_market_service.cloud_app_model_to_db_model(
         market, app_model_id, app_model_version, for_install=True)
     if not app:
         raise ServiceHandleException(status_code=404,
                                      msg="not found",
                                      msg_show="云端应用不存在")
     if not app_version_info:
         raise ServiceHandleException(status_code=404,
                                      msg="not found",
                                      msg_show="云端应用版本不存在")
     market_app_service.install_service(self.team,
                                        self.region_name,
                                        self.user,
                                        app_id,
                                        app,
                                        app_version_info,
                                        is_deploy,
                                        True,
                                        market_name=market_name)
     services = group_service.get_group_services(app_id)
     app_info = model_to_dict(self.app)
     app_info["app_name"] = app_info["group_name"]
     app_info["team_id"] = app_info["tenant_id"]
     app_info["enterprise_id"] = self.team.enterprise_id
     app_info["service_list"] = services
     reapp = MarketInstallSerializer(data=app_info)
     reapp.is_valid()
     return Response(reapp.data, status=status.HTTP_200_OK)
Ejemplo n.º 4
0
 def get(self, request, enterprise_id, market_name, app_id, version, *args,
         **kwargs):
     _, market_model = app_market_service.get_app_market(
         enterprise_id, market_name, raise_exception=True)
     data = app_market_service.get_market_app_model_version(market_model,
                                                            app_id,
                                                            version,
                                                            extend=True)
     result = general_message(200, "success", None, bean=data)
     return Response(result, status=200)
Ejemplo n.º 5
0
 def get(self, request, team_name, group_id, record_id, *args, **kwargs):
     data = None
     share_record = share_repo.get_service_share_record_by_id(
         group_id=group_id, record_id=record_id)
     if share_record:
         app_model_name = None
         app_model_id = None
         version = None
         version_alias = None
         upgrade_time = None
         store_name = None
         store_version = "1.0"
         store_id = share_record.share_app_market_name
         scope = share_record.scope
         if store_id:
             extend, market = app_market_service.get_app_market(
                 self.tenant.enterprise_id,
                 share_record.share_app_market_name,
                 extend="true",
                 raise_exception=True)
             if market:
                 store_name = market.name
                 store_version = extend.get("version", store_version)
         app = rainbond_app_repo.get_rainbond_app_by_app_id(
             self.tenant.enterprise_id, share_record.app_id)
         if app:
             app_model_id = share_record.app_id
             app_model_name = app.app_name
         app_version = rainbond_app_repo.get_rainbond_app_version_by_record_id(
             share_record.ID)
         if app_version:
             version = app_version.version
             version_alias = app_version.version_alias
             upgrade_time = app_version.upgrade_time
         data = {
             "app_model_id": app_model_id,
             "app_model_name": app_model_name,
             "version": version,
             "version_alias": version_alias,
             "scope": scope,
             "create_time": share_record.create_time,
             "upgrade_time": upgrade_time,
             "step": share_record.step,
             "is_success": share_record.is_success,
             "status": share_record.status,
             "scope_target": {
                 "store_name": store_name,
                 "store_id": store_id,
                 "store_version": store_version
             },
             "record_id": share_record.ID,
         }
     result = general_message(200, "success", None, bean=data)
     return Response(result, status=200)
Ejemplo n.º 6
0
 def delete(self, request, enterprise_id, market_name, *args, **kwargs):
     _, market_model = app_market_service.get_app_market(enterprise_id, market_name, raise_exception=True)
     market_model.delete()
     result = general_message(200, "success", None)
     return Response(result, status=200)
Ejemplo n.º 7
0
    def post(self, request, *args, **kwargs):
        """
        创建应用市场应用
        ---
        parameters:
            - name: tenantName
              description: 团队名称
              required: true
              type: string
              paramType: path
            - name: group_id
              description: 组id
              required: true
              type: string
              paramType: form
            - name: app_id
              description: rainbond app id
              required: true
              type: string
              paramType: form
            - name: install_from_cloud
              description: install app from cloud
              required: false
              type: bool
              paramType: form
        """
        try:
            group_id = request.data.get("group_id", -1)
            app_id = request.data.get("app_id", None)
            app_version = request.data.get("app_version", None)
            is_deploy = request.data.get("is_deploy", True)
            install_from_cloud = request.data.get("install_from_cloud", False)
            market_name = request.data.get("market_name", None)
            if not app_id or not app_version:
                return Response(general_message(400, "app id is null",
                                                "请指明需要安装的应用"),
                                status=400)
            if int(group_id) != -1:
                group_service.get_group_by_id(self.tenant,
                                              self.response_region, group_id)
            app = None
            app_version_info = None
            if install_from_cloud:
                dt, market = app_market_service.get_app_market(
                    self.tenant.enterprise_id,
                    market_name,
                    raise_exception=True)
                app, app_version_info = app_market_service.cloud_app_model_to_db_model(
                    market, app_id, app_version, for_install=True)
                if not app:
                    return Response(general_message(404, "not found",
                                                    "云端应用不存在"),
                                    status=404)
            else:
                app, app_version_info = market_app_service.get_rainbond_app_and_version(
                    self.user.enterprise_id, app_id, app_version)
                if not app:
                    return Response(general_message(404, "not found",
                                                    "云市应用不存在"),
                                    status=404)

            market_app_service.install_service(self.tenant,
                                               self.response_region,
                                               self.user,
                                               group_id,
                                               app,
                                               app_version_info,
                                               is_deploy,
                                               install_from_cloud,
                                               market_name=market_name)
            if not install_from_cloud:
                market_app_service.update_rainbond_app_install_num(
                    self.user.enterprise_id, app_id, app_version)
            logger.debug("market app create success")
            result = general_message(200, "success", "创建成功")
        except ServiceHandleException as e:
            raise e
        except ResourceNotEnoughException as re:
            raise re
        except AccountOverdueException as re:
            logger.exception(re)
            return Response(general_message(10406, "resource is not enough",
                                            re.message),
                            status=412)
        return Response(result, status=result["code"])