def get_upgrade_app_version_template_app(tenant, version, pc): if pc.install_from_cloud: rst = market_api.get_app_template(tenant.tenant_id, pc.current_app.app_id, version) data = rst.get("data") if not data: return None, None bean = data.get("bean") if not bean: return None, None app_template = bean.get("template_content") template = json.loads(app_template) apps = template.get("apps") def func(x): result = x.get("service_share_uuid", None) == pc.service_source.service_share_uuid \ or x.get("service_key", None) == pc.service_source.service_share_uuid return result app = next(iter(filter(lambda x: func(x), apps)), None) else: app = rbd_center_app_service.get_version_app(tenant.enterprise_id, version, pc.service_source) return app
def get_property_changes(self, eid, version): """ get property changes for market service raise: RecordNotFound raise: RbdAppNotFound """ app = rbd_center_app_service.get_version_app(eid, version, self.service_source) # when modifying the following properties, you need to # synchronize the method 'properties_changes.has_changes' result = {} deploy_version = self.deploy_version_changes(app["deploy_version"]) if deploy_version: result["deploy_version"] = deploy_version # source code service does not have 'share_image' image = self.image_changes(app.get("share_image", None)) if image: result["image"] = image slug_path = self.slug_path_changes(app.get("share_slug_path", None)) if slug_path: result["slug_path"] = slug_path envs = self.env_changes(app.get("service_env_map_list", [])) if envs: result["envs"] = envs ports = self.port_changes(app.get("port_map_list", [])) if ports: result["ports"] = ports connect_infos = self.env_changes( app.get("service_connect_info_map_list", [])) if connect_infos: result["connect_infos"] = connect_infos volumes = self.volume_changes(app.get("service_volume_map_list", [])) if volumes: result["volumes"] = volumes probe = self.probe_changes(app["probes"]) if probe: result["probe"] = probe dep_uuids = [] if app.get("dep_service_map_list", []): dep_uuids = [ item["dep_service_key"] for item in app.get("dep_service_map_list") ] dep_services = self.dep_services_changes(dep_uuids) if dep_services: result["dep_services"] = dep_services dep_volumes = self.dep_volumes_changes(app.get("mnt_relation_list", [])) if dep_volumes: result["dep_volumes"] = dep_volumes plugins = self.plugin_changes( app.get("service_related_plugin_config", [])) if plugins: logger.debug("plugin changes: {}".format(json.dumps(plugins))) result["plugins"] = plugins return result
def get_upgrade_app_version_template_app(tenant, version, pc): if pc.install_from_cloud: data = app_market_service.get_market_app_model_version(pc.market, pc.current_app.app_id, version, get_template=True) template = json.loads(data.template) apps = template.get("apps") def func(x): result = x.get("service_share_uuid", None) == pc.service_source.service_share_uuid \ or x.get("service_key", None) == pc.service_source.service_share_uuid return result app = next(iter(filter(lambda x: func(x), apps)), None) else: app = rbd_center_app_service.get_version_app(tenant.enterprise_id, version, pc.service_source) return app
def modify_property(self): """ Perform modifications to the given properties. must be called after `set_changes`. """ service_source = service_source_repo.get_service_source( self.tenant.tenant_id, self.service.service_id) app = rbd_center_app_service.get_version_app(self.tenant.enterprise_id, self.version, service_source) self._update_service(app) self._update_service_source(app, self.version) changes = deepcopy(self.changes) for k, v in changes.items(): func = self.update_funcs.get(k, None) if func is None: continue func(v)