Exemple #1
0
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
Exemple #3
0
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
Exemple #4
0
 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)