def __init__(self,
              service,
              tenant,
              all_component_one_model=None,
              only_one_component=False,
              install_from_cloud=False):
     self.service = service
     self.tenant = tenant
     self.service_source = service_source_repo.get_service_source(
         service.tenant_id, service.service_id)
     self.current_version = self.service_source.version
     self.install_from_cloud = False
     self.market_name = None
     self.only_one_component = only_one_component
     self.market = None
     self.all_component_one_model = all_component_one_model
     if self.service_source and self.service_source.extend_info:
         extend_info = json.loads(self.service_source.extend_info)
         if extend_info and extend_info.get("install_from_cloud", False):
             self.install_from_cloud = True
         if self.install_from_cloud:
             self.market_name = extend_info.get("market_name", None)
             self.market = app_market_repo.get_app_market_by_name(
                 tenant.enterprise_id,
                 self.market_name,
                 raise_exception=True)
Beispiel #2
0
 def create_app_market(self, data):
     exit_market = app_market_repo.get_app_market_by_name(
         enterprise_id=data["enterprise_id"], name=data["name"])
     if exit_market:
         raise ServiceHandleException(msg="name exist",
                                      msg_show="名称已存在",
                                      status_code=400)
     return app_market_repo.create_app_market(**data)
Beispiel #3
0
 def __init__(self, service, tenant, all_component_one_model=None, only_one_component=False, install_from_cloud=False):
     self.service = service
     self.tenant = tenant
     self.service_source = service_source_repo.get_service_source(service.tenant_id, service.service_id)
     self.current_version = self.service_source.version
     self.install_from_cloud = self.service_source.is_install_from_cloud()
     self.market_name = self.service_source.get_market_name()
     self.only_one_component = only_one_component
     self.market = None
     self.all_component_one_model = all_component_one_model
     if self.install_from_cloud and self.market_name:
         self.market = app_market_repo.get_app_market_by_name(tenant.enterprise_id, self.market_name, raise_exception=True)
Beispiel #4
0
 def batch_create_app_market(self, eid, data):
     if data is not None:
         for dt in data:
             exist_market = app_market_repo.get_app_market_by_name(
                 enterprise_id=eid, name=dt["name"])
             if exist_market:
                 app_market_repo.update_access_key(
                     enterprise_id=eid,
                     name=dt["name"],
                     access_key=dt["access_key"])
                 continue
             app_market_repo.create_app_market(**dt)
     return self.get_app_markets(eid, extend="true")
Beispiel #5
0
 def update_app_market(self, app_market, data):
     exit_market = app_market_repo.get_app_market_by_name(
         enterprise_id=data["enterprise_id"], name=data["name"])
     if exit_market:
         if exit_market.ID != app_market.ID:
             raise ServiceHandleException(msg="name exist",
                                          msg_show="名称已存在",
                                          status_code=400)
     app_market.name = data["name"]
     app_market.type = data["type"]
     app_market.enterprise_id = data["enterprise_id"]
     app_market.url = data["url"]
     app_market.access_key = data["access_key"]
     app_market.domain = data["domain"]
     app_market.save()
     return app_market
    def _app_template(enterprise_id, app_model_key, version, app_template_source):
        if not app_template_source.is_install_from_cloud():
            _, app_version = rainbond_app_repo.get_rainbond_app_and_version(enterprise_id, app_model_key, version)
        else:
            market = app_market_repo.get_app_market_by_name(
                enterprise_id, app_template_source.get_market_name(), raise_exception=True)
            _, app_version = app_market_service.cloud_app_model_to_db_model(market, app_model_key, version)

        if not app_version:
            raise AbortRequest("app template not found", "找不到应用模板", status_code=404, error_code=404)

        try:
            app_template = json.loads(app_version.app_template)
            app_template["update_time"] = app_version.update_time
            return app_template
        except JSONDecodeError:
            raise AbortRequest("invalid app template", "该版本应用模板已损坏, 无法升级")
Beispiel #7
0
 def __init__(self, service, tenant, install_from_cloud=False):
     self.service = service
     self.tenant = tenant
     self.current_version = None
     self.current_app = None
     self.template = None
     self.service_source = service_source_repo.get_service_source(service.tenant_id, service.service_id)
     self.install_from_cloud = False
     self.market_name = None
     self.market = None
     if self.service_source and self.service_source.extend_info:
         self.current_version_str = self.service_source.version
         extend_info = json.loads(self.service_source.extend_info)
         if extend_info and extend_info.get("install_from_cloud", False):
             self.install_from_cloud = True
         if self.install_from_cloud:
             self.market_name = extend_info.get("market_name", None)
             self.market = app_market_repo.get_app_market_by_name(
                 tenant.enterprise_id, self.market_name, raise_exception=True)
         self.__get_current_app_and_version()
Beispiel #8
0
 def get_app_market(self,
                    enterprise_id,
                    market_name,
                    extend="false",
                    raise_exception=False):
     market = app_market_repo.get_app_market_by_name(
         enterprise_id, market_name, raise_exception)
     dt = {
         "access_key": market.access_key,
         "name": market.name,
         "url": market.url,
         "type": market.type,
         "domain": market.domain,
         "ID": market.ID,
     }
     if extend == "true":
         try:
             extend_info = app_store.get_market(market)
             market.description = extend_info.description
             market.alias = extend_info.name
             market.status = extend_info.status
             market.access_actions = extend_info.access_actions
         except Exception as e:
             logger.debug(e)
             market.description = None
             market.alias = None
             market.status = 0
             market.access_actions = []
         if raise_exception:
             if market.status == 0:
                 raise ServiceHandleException(msg="call market error",
                                              msg_show="应用商店状态异常")
         dt.update({
             "description": market.description,
             "alias": market.alias,
             "status": market.status,
             "access_actions": market.access_actions,
         })
     return dt, market
Beispiel #9
0
 def get_app_market_by_name(self,
                            enterprise_id,
                            name,
                            raise_exception=False):
     return app_market_repo.get_app_market_by_name(
         enterprise_id, name, raise_exception=raise_exception)