def all(): project = Project.find() discovery = PluginDiscoveryService(project) ordered_plugins = {} for type, plugins in groupby(discovery.plugins(), key=lambda p: p.type): ordered_plugins[type] = [plugin.canonical() for plugin in plugins] return jsonify(ordered_plugins)
def all(): project = Project.find() discovery = PluginDiscoveryService(project) ordered_plugins = {} for type, plugins in groupby(discovery.plugins(), key=lambda p: p.type): canonical_plugins = [] for plugin in plugins: canonical_plugin = plugin.canonical() # let's remove all the settings related data canonical_plugin.pop("settings", None) canonical_plugin.pop("settings_group_validation", None) canonical_plugins.append(canonical_plugin) ordered_plugins[type] = canonical_plugins return jsonify(ordered_plugins)
def parse_packages(self): discovery = PluginDiscoveryService(self.project) model_plugins = [ plugin for plugin in discovery.plugins() if plugin.type is PluginType.MODELS ] for package in self.packages(): if not package.topics and package.tables: raise MeltanoAnalysisMissingTopicFilesError( f"Missing topic file(s) for package {package}") for table in package.tables: conf = self.parse_m5o_file(table) parsed_table = self.table(conf, table.name) self.tables.append(parsed_table) for topic in package.topics: conf = self.parse_m5o_file(topic) parsed_topic = self.topic(conf, topic.name) model = next( (plugin for plugin in model_plugins if plugin.name == package.name), None, ) parsed_topic[ "plugin_namespace"] = model.namespace if model else None parsed_topic["namespace"] = package.name self.packaged_topics.append(parsed_topic) # Reset the tables list so that tables with the same name from # different packages are not interfearing with correctly parsing # the packages that follow self.tables = [] return self.packaged_topics
def install_batch(): payload = request.get_json() plugin_type = PluginType(payload["plugin_type"]) plugin_name = payload["name"] project = Project.find() discovery = PluginDiscoveryService(project) target_plugin = discovery.find_plugin(plugin_type, plugin_name) config_service = ConfigService(project) add_service = ProjectAddService(project) install_service = PluginInstallService(project) ignored_types = [target_plugin.type, PluginType.TRANSFORMS] has_model = False batched = [] for plugin in discovery.plugins(): if plugin.namespace == target_plugin.namespace: if plugin.type not in ignored_types: add_service.add(plugin.type, plugin.name) plugin_install = config_service.find_plugin( plugin.name, plugin_type=plugin.type) batched.append(plugin_install.canonical()) run_venv = install_service.create_venv(plugin_install) run_install_plugin = install_service.install_plugin( plugin_install) if plugin.type is PluginType.MODELS: has_model = True if has_model: compiler = ProjectCompiler(project) try: compiler.compile() except Exception as e: pass return jsonify(batched)