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)
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)
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)
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)
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)
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)
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"])