def get_or_create_upgrade_record(self, tenant_id, group_id, group_key, upgrade_group_id, is_from_cloud, market_name):
     """获取或创建升级记录"""
     recode_kwargs = {
         "tenant_id": tenant_id,
         "group_id": group_id,
         "group_key": group_key,
         "create_time": datetime.now(),
         "is_from_cloud": is_from_cloud,
         "market_name": market_name,
         "upgrade_group_id": upgrade_group_id,
     }
     try:
         return upgrade_repo.get_app_not_upgrade_record(status__lt=UpgradeStatus.UPGRADED.value, **recode_kwargs)
     except AppUpgradeRecord.DoesNotExist:
         from console.services.group_service import group_service
         tenant = Tenants.objects.get(tenant_id=tenant_id)
         service_group_keys = group_service.get_group_service_sources(group_id).values_list('group_key', flat=True)
         if group_key in set(service_group_keys or []):
             if not is_from_cloud:
                 app = rainbond_app_repo.get_rainbond_app_qs_by_key(tenant.enterprise_id, group_key)
                 if not app:
                     raise ServiceHandleException(
                         msg="the rainbond app is not in the group", msg_show="该应用中没有这个云市组件", status_code=404)
                 app_name = app.app_name
             else:
                 market = app_market_service.get_app_market_by_name(tenant.enterprise_id, market_name, raise_exception=True)
                 app = app_market_service.get_market_app_model(market, group_key)
                 app_name = app.app_name
             app_record = upgrade_repo.create_app_upgrade_record(group_name=app_name, **recode_kwargs)
             return app_record
         else:
             raise AbortRequest(msg="the app model is not in the group", msg_show="该应用中没有这个应用模型", status_code=404)
 def get_or_create_upgrade_record(self, tenant_id, group_id, group_key):
     """获取或创建升级记录"""
     recode_kwargs = {
         "tenant_id": tenant_id,
         "group_id": group_id,
         "group_key": group_key,
         "create_time": datetime.now(),
     }
     try:
         app_record = upgrade_repo.get_app_not_upgrade_record(
             status__lt=UpgradeStatus.UPGRADED.value, **recode_kwargs)
     except AppUpgradeRecord.DoesNotExist:
         from console.services.group_service import group_service
         service_group_keys = group_service.get_group_service_sources(
             group_id).values_list('group_key', flat=True)
         if group_key not in set(service_group_keys or []):
             raise AbortRequest(msg="the rainbond app is not in the group",
                                msg_show="该组中没有这个云市组件",
                                status_code=404)
         tenant = Tenants.objects.get(tenant_id=tenant_id)
         app = rainbond_app_repo.get_rainbond_app_qs_by_key(
             tenant.enterprise_id, group_key).first()
         if not app:
             raise AbortRequest(msg="No rainbond app found",
                                msg_show="没有找到此云市组件",
                                status_code=404)
         app_record = upgrade_repo.create_app_upgrade_record(
             group_name=app.group_name, **recode_kwargs)
     return app_record
Esempio n. 3
0
 def get_or_create_upgrade_record(self, tenant_id, group_id, group_key):
     """获取或创建升级记录"""
     recode_kwargs = {
         "tenant_id": tenant_id,
         "group_id": group_id,
         "group_key": group_key,
         "create_time": datetime.now(),
     }
     try:
         app_record = upgrade_repo.get_app_not_upgrade_record(status__lt=UpgradeStatus.UPGRADED.value, **recode_kwargs)
     except AppUpgradeRecord.DoesNotExist:
         from console.services.group_service import group_service
         tenant = Tenants.objects.get(tenant_id=tenant_id)
         service_group_keys = group_service.get_group_service_sources(group_id).values_list('group_key', flat=True)
         if group_key in set(service_group_keys or []):
             app_name = None
             app = rainbond_app_repo.get_rainbond_app_qs_by_key(tenant.enterprise_id, group_key).first()
             if app:
                 app_name = app.app_name
             else:
                 is_cloud_app = False
                 markets = self.get_cloud_markets(enterprise_id=tenant.enterprise_id)
                 if markets:
                     for market in markets:
                         cloud_app = self.get_cloud_app(tenant.enterprise_id, market.market_id, group_key)
                         if cloud_app:
                             app_name = cloud_app.name
                             is_cloud_app = True
                 if not is_cloud_app:
                     raise AbortRequest(msg="the rainbond app is not in the group", msg_show="该应用中没有这个云市组件", status_code=404)
             app_record = upgrade_repo.create_app_upgrade_record(group_name=app_name, **recode_kwargs)
             return app_record
         else:
             raise AbortRequest(msg="the rainbond app is not in the group", msg_show="该应用中没有这个云市组件", status_code=404)
Esempio n. 4
0
    def get(self, request, group_id, *args, **kwargs):
        """查询当前组下的云市应用"""
        group_id = int(group_id)
        group = group_service.get_group_or_404(self.tenant,
                                               self.response_region, group_id)

        service_group_keys = group_service.get_group_service_sources(
            group.ID).values_list('group_key', flat=True)

        def yield_app_info():
            for group_key in set(service_group_keys):
                app_qs = rainbond_app_repo.get_rainbond_app_qs_by_key(
                    group_key=group_key)
                app = app_qs.first()
                if not app:
                    continue
                group_version_list = app_qs.values_list('version', flat=True)
                upgrade_versions = upgrade_service.get_app_upgrade_versions(
                    self.tenant, group_id, group_key)
                not_upgrade_record = upgrade_service.get_app_not_upgrade_record(
                    self.tenant.tenant_id, group_id, group_key)
                yield {
                    'can_upgrade':
                    bool(upgrade_versions),
                    'not_upgrade_record_id':
                    not_upgrade_record.ID,
                    'not_upgrade_record_status':
                    not_upgrade_record.status,
                    'group_version_list':
                    group_version_list,
                    'group_key':
                    app.group_key,
                    'group_name':
                    app.group_name,
                    'share_user':
                    app.share_user,
                    'share_team':
                    app.share_team,
                    'tenant_service_group_id':
                    app.tenant_service_group_id,
                    'pic':
                    app.pic,
                    'source':
                    app.source,
                    'describe':
                    app.describe,
                    'enterprise_id':
                    app.enterprise_id,
                    'is_official':
                    app.is_official,
                    'details':
                    app.details,
                    'min_memory':
                    group_service.get_service_group_memory(app.app_template),
                }

        return MessageResponse(
            msg="success", list=[app_info for app_info in yield_app_info()])