melezhik / sparrow

Sparrow - script distribution platform for Linux OS
https://sparrowhub.org
77 stars 6 forks source link

Sparrow doesn't get all string of parameters, but strun does #16

Closed spigell closed 7 years ago

spigell commented 7 years ago

Здравствуйте. Столкнулся с такой штукой, что sparrow при передачи параметров берет только первый из строки, а не все. Strun работает корректно. Например,

[spigell@hammerhead ~]$ sparrow plg run bash-pssh --param commands=uname  --param hosts="194.87.235.183 193.124.178.59 " --debug 2 --param debug=1
make cache dir: /home/spigell/.outthentic/tmp/10319/story-0
configuration populated and saved to /home/spigell/.outthentic/tmp/10319/story-0/config.json
project: /home/spigell/sparrow/plugins/private/bash-pssh
story: /home/spigell/sparrow/plugins/private/bash-pssh
story_type: upstream
debug: 2
ignore story errors: 0
•[plg] bash-pssh at 2017-05-14 01:24:09

execute scenario: bash -c 'source /home/spigell/.outthentic/tmp/10319/story-0/glue.bash && source /usr/share/perl5/site_perl/auto/share/dist/Outthentic/outthentic.bash && source /home/spigell/sparrow/plugins/private/bash-pssh/story.bash'
+++ config hosts
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/10319/story-0/config.json hosts
++ hosts=194.87.235.183

В json конфиге только первое значение. [spigell@hammerhead ~]$ cat /home/spigell/.outthentic/tmp/10319/story-0/config.json; echo {"hosts":"194.87.235.183","debug":"1","commands":"uname"}

Если же все делать через strun, то получается все хорошо. Тот же самый плагин, те же самый параметры.

cd ./sparrow/plugins/private/bash-pssh/

[spigell@hammerhead bash-pssh]$ strun --param commands=uname  --param hosts="194.87.235.183 193.124.178.59 " --debug 2 --param debug=1
make cache dir: /home/spigell/.outthentic/tmp/10412/story-0
configuration populated and saved to /home/spigell/.outthentic/tmp/10412/story-0/config.json
project: /home/spigell/sparrow/plugins/private/bash-pssh
story: /home/spigell/sparrow/plugins/private/bash-pssh
story_type: upstream
debug: 2
ignore story errors: 0
• at 2017-05-14 01:27:58

execute scenario: bash -c 'source /home/spigell/.outthentic/tmp/10412/story-0/glue.bash && source /usr/share/perl5/site_perl/auto/share/dist/Outthentic/outthentic.bash && source /home/spigell/sparrow/plugins/private/bash-pssh/story.bash'
+++ config hosts
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/10412/story-0/config.json hosts
++ hosts='194.87.235.183 193.124.178.59 '

[spigell@hammerhead bash-pssh]$ cat /home/spigell/.outthentic/tmp/10412/story-0/config.json ;echo
{"commands":"uname","debug":"1","hosts":"194.87.235.183 193.124.178.59 "}

Посмотрите, пожалуйста.

melezhik commented 7 years ago

Приветствую! Эта старая бага , попытаюсь ее пофиксить вскоре. Пока как временное решение, при запуске через sparrow, заключайте в двойные, а затем в одинарные кавычки значения с пробелами:

sparrow plg run foo --param hosts="'192.168.0.1 192.168.0.2'"
melezhik commented 7 years ago

Пофиксил. Поставьте Sparrow из гита. Проверьте.

Теперь не нужно заключать параметры с пробелами в дополнительные кавычки, как это делалось ранее, т.е. ваш пример теперь должен работать одинаково как через sparrow так и через strun:

$ sparrow plg run bash-pssh \\
--param commands=uname  --param hosts="194.87.235.183 193.124.178.59" \\
--debug 2 --param debug=1
$ strun \\
--param commands=uname  --param hosts="194.87.235.183 193.124.178.59" \\
--debug 2 --param debug=1

Изменения достаточно кричтиные в том смысле, что теперь везде где вы использовали вызовы с дополнительными кавычками для --param их нужно будет убрать.

Буду признателен, если вы все это потестируете на ваших плагинах, т.к. я пока проверил только на одном плагине.

spigell commented 7 years ago

Работает. Пока проблем не нашел.

[spigell@hammerhead sparrow]$ sparrow plg run bash-pssh --param hosts="193.124.178.59 my-*-host" --param commands='uname'
•[plg] bash-pssh at 2017-06-22 22:19:27

193.124.178.59: Linux
my-best-host:   Linux
my-favourite-host:  Linux
ok  scenario succeeded
STATUS  SUCCEED
melezhik commented 7 years ago

выложил в спан - https://metacpan.org/release/MELEZHIK/Sparrow-0.2.38