Назад | Перейти на главную страницу

Как я могу получить доступ к значениям конфигурации плагина OptionValue в Java

https://docs.rundeck.com/docs/developer/12-option-values-plugins.html#configuring говорит

Чтобы настроить плагин, вы можете добавить значения конфигурации в рамки или проект.

Определение свойства области действия фреймворка в framework.properties

framework.plugin.OptionValues. [your_plugin_name]. [property] = value

Определение свойства области проекта в project.properties

project.plugin.OptionValues. [your_plugin_name]. [property] = value

Я добавил свойство проекта, которое я ожидал найти где-нибудь в config. Например, если были доступны ключи из project.properties, этот код должен создать их как опции:

@Override
public List<OptionValue> getOptionValues(Map config) {
    List<OptionValue> optionValues = new ArrayList<OptionValue>();
    Iterator keys = config.keySet().iterator();
    while (keys.hasNext()) {
        String key = keys.next().toString();
        optionValues.add(new StringOptionValue(key, key));
    }
    optionValues.add(new StringOptionValue("stub", "stub'));
    return optionValues;
}

Свойства моего проекта выглядят так

project.disable.executions=false
project.disable.schedule=false
project.execution.history.cleanup.batch=500
project.execution.history.cleanup.enabled=false
project.execution.history.cleanup.retention.days=60
project.execution.history.cleanup.retention.minimum=50
project.execution.history.cleanup.schedule=0 0 0 1/1 * ? *
project.jobs.gui.groupExpandLevel=1
project.name=Nodeless
project.output.allowUnsanitized=false
project.plugin.OptionValues.MyOptionProvider.endpoint=https\://example.com/rest
project.ssh-authentication=privateKey
project.ssh-command-timeout=0
project.ssh-connect-timeout=0
project.ssh-keypath=/home/me/.ssh/id_rsa
resources.source.1.type=local
service.FileCopier.default.provider=jsch-scp
service.NodeExecutor.default.provider=jsch-ssh

Как мне получить доступ к конфигурации плагина?

Простой ответ - использовать аннотации плагинов:

@PluginProperty(title = "Web service endpoint", description = "Server URL and path", required = true, scope=PropertyScope.Project)
private String endpoint;