Пример #1
0
def get_plugin_configuration(plugin_ref) -> Response:
    """
    Endpoint for getting a plugin's configuration profiles
    """

    project = Project.find()
    settings = PluginSettingsService(project, show_hidden=False)
    plugin = ConfigService(project).get_plugin(plugin_ref)

    discovery_service = PluginDiscoveryService(project)
    try:
        plugin_def = discovery_service.find_plugin(plugin.type, plugin.name)
        settings_group_validation = plugin_def.settings_group_validation
    except PluginNotFoundError:
        settings_group_validation = []

    profiles = settings.profiles_with_config(db.session, plugin, redacted=True)
    for profile in profiles:
        freeze_profile_config_keys(profile)

    return jsonify({
        "profiles":
        profiles,
        "settings":
        Canonical.as_canonical(settings.definitions(plugin)),
        "settings_group_validation":
        settings_group_validation,
    })
Пример #2
0
def get_plugin_configuration(plugin_ref) -> Response:
    """
    Endpoint for getting a plugin's configuration
    """

    project = Project.find()

    plugins_service = ProjectPluginsService(project)
    plugin = plugins_service.get_plugin(plugin_ref)

    settings = PluginSettingsService(project,
                                     plugin,
                                     plugins_service=plugins_service,
                                     show_hidden=False)

    try:
        settings_group_validation = plugin.settings_group_validation
    except PluginNotFoundError:
        settings_group_validation = []

    return jsonify({
        **get_config_with_metadata(settings),
        "settings":
        Canonical.as_canonical(settings.definitions(extras=False)),
        "settings_group_validation":
        settings_group_validation,
    })
Пример #3
0
    def test_fallbacks(self, subject):
        # Calling an unknown attribute is not supported
        with pytest.raises(AttributeError):
            subject.unknown

        fallback = Canonical(unknown="value", known="value")
        # This would typically be set from a Canonical subclass
        subject._fallback_to = fallback

        # Unknown attributes fall back
        assert subject.unknown == "value"
        assert "unknown" not in subject.canonical()

        # Known attributes don't fall back
        subject.known = None
        assert subject.known is None

        # Unless we make them
        subject._fallbacks.add("known")
        assert subject.known == "value"
        assert "known" not in subject.canonical()

        # Unless there is nothing to fallback to
        subject._fallback_to = None
        assert subject.known is None

        # Defaults are still applied
        subject._defaults["known"] = lambda _: "default"
        assert subject.known == "default"
        assert "known" not in subject.canonical()

        # Until a value is set
        subject.known = "value"
        assert subject.known == "value"
        assert subject.canonical()["known"] == "value"
Пример #4
0
    def load_plugins(self, plugins) -> Canonical:
        """Parse the meltano.yml file and return it as `PluginInstall` instances."""
        plugin_type_plugins = Canonical()

        # this will parse the meltano.yml file and create an instance of the
        # corresponding `plugin_class` for all the plugins.
        for plugin_type, plugin_defs in plugins.items():
            plugin_type_plugins[plugin_type] = []

            for plugin_def in plugin_defs:
                plugin = plugin_factory(plugin_type, plugin_def)
                plugin_type_plugins[plugin_type].append(plugin)

        return plugin_type_plugins
Пример #5
0
    def load_plugins(self, plugins) -> Canonical:
        """Parse the meltano.yml file and return it as `ProjectPlugin` instances."""
        plugin_type_plugins = Canonical()

        for plugin_type in PluginType:
            plugin_type_plugins[plugin_type] = []

        # this will parse the meltano.yml file and create an instance of the
        # corresponding `plugin_class` for all the plugins.
        for plugin_type, raw_plugins in plugins.items():
            for raw_plugin in raw_plugins:
                plugin = ProjectPlugin(PluginType(plugin_type), **raw_plugin)
                plugin_type_plugins[plugin.type].append(plugin)

        return plugin_type_plugins
Пример #6
0
def project(test_dir, project_init_service):
    project = project_init_service.init(create_system_database=False)
    logging.debug(f"Created new project at {project.root}")

    # empty out the `plugins`
    with project.meltano_update() as meltano:
        meltano.plugins = Canonical()

    # cd into the new project root
    os.chdir(project.root)

    yield project

    # clean-up
    Project._default = None
    os.chdir(test_dir)
    shutil.rmtree(project.root)
    logging.debug(f"Cleaned project at {project.root}")
Пример #7
0
def project(test_dir, project_init_service):
    project = project_init_service.init(add_discovery=True)
    logging.debug(f"Created new project at {project.root}")

    # empty out the `plugins`
    with project.meltano_update() as meltano:
        meltano.plugins = Canonical()

    # cd into the new project root
    os.chdir(project.root)

    yield project

    # clean-up
    Project.deactivate()
    os.chdir(test_dir)
    shutil.rmtree(project.root)
    logging.debug(f"Cleaned project at {project.root}")
Пример #8
0
 def test_update_canonical(self, subject):
     subject.update(Canonical(test="value"))
     assert subject.test == "value"
Пример #9
0
    def test_nested_empty(self, subject):
        nested = Canonical(test="")
        subject.nested = nested

        assert "nested" not in Canonical.as_canonical(subject)
Пример #10
0
    def test_nested(self, subject):
        nested = Canonical(test="value")
        subject.nested = nested

        assert Canonical.as_canonical(
            subject)["nested"] == Canonical.as_canonical(nested)
Пример #11
0
 def subject(self):
     return Canonical(**definition)