def save_plugin_configuration(plugin_ref) -> Response: """ Endpoint for persisting a plugin configuration """ project = Project.find() payload = request.get_json() plugin = ConfigService(project).get_plugin(plugin_ref) # TODO iterate pipelines and save each, also set this connector's profile (reuse `pipelineInFocusIndex`?) settings = PluginSettingsService(project, show_hidden=False) for profile in payload: # select the correct profile name = profile["name"] plugin.use_profile(plugin.get_profile(name)) for name, value in profile["config"].items(): if not validate_plugin_config(plugin, name, value, project, settings): continue if value == "": settings.unset(db.session, plugin, name) else: settings.set(db.session, plugin, name, value) profiles = settings.profiles_with_config(db.session, plugin, redacted=True) for profile in profiles: freeze_profile_config_keys(profile) return jsonify(profiles)
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, })