Использование свойств в скриптах Wildfly-CLI для логики if / else - PullRequest
0 голосов
/ 07 ноября 2018

В CLI-скриптах Wildfly можно проверить наличие ресурса и выполнить некоторую условную логику:

if (outcome != success) of /subsystem=datasources/xa-data-source=MY_DATASOURCE:read-resource  
// now do something  

Когда вы запускаете cli, вы можете предоставить свойства, доступные в ваших скриптах, например:

$JBOSS_HOME/bin/jboss-cli.sh --file=my.cli --properties=my.properties  

Я хотел бы представить некоторую условную логику, основанную на этих свойствах, для выполнения некоторой условной конфигурации.

Одним из примеров является то, что для настройки почтового сервера иногда почтовому серверу требуются имя пользователя и пароль, а в других случаях разрешается анонимный доступ. При настройке конфигурации почтового сервера я бы хотел иметь такую ​​условную логику, как эта

if MAILSERVER_USERNAME is defined //confiure mailserver with username password else // configure mailserver without attributes username/password

Единственное, что я могу увидеть, это возможно, если я уже добавил параметр системного свойства в мой standalone-full.xml, я могу запросить его следующим образом:

if (outcome != success) of /system-property=foo:read-resource  
 // now do something  

Я хотел бы сделать что-то подобное на основе свойств, переданных из my.properties.

Возможно ли это?

Спасибо

Daniel

1 Ответ

0 голосов
/ 07 ноября 2018

Свойства, через которые вы проходите --properties, нельзя использовать в любом контексте, что делает тестирование их существования утомительным:

[standalone@localhost] :resolve-expression(expression=$myProperty)
Unrecognized variable myProperty
[standalone@localhost] :resolve-expression(expression=${myProperty})
{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0211: Cannot resolve expression '${myProperty}'",
    "rolled-back" => true
}

Однако вы можете решить эту проблему, используя команду set в вашем скрипте cli:

[standalone@localhost] set myProperty=${myProperty}
[standalone@localhost] :resolve-expression(expression=$myProperty)
{
    "outcome" => "success",
    "result" => "myValue"
}

Затем вы можете использовать результат команды resolve-expression, чтобы проверить наличие вашей собственности:

[standalone@localhost] if (outcome == success) of :resolve-expression(expression=$myProperty)
[standalone@localhost] echo success ! myProperty is set ( $myProperty )
[standalone@localhost] end-if
success ! myProperty is set ( myValue )

Если ваше свойство не определено, попытка разрешить его с помощью resolve-expression вызовет ошибку:

[standalone@localhost] set myProperty=${notMyProperty}
[standalone@localhost] :resolve-expression(expression=$myProperty)
{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0211: Cannot resolve expression '${notMyProperty}'",
    "rolled-back" => true
}
...