REST APIからパラメータ有りのジョブフローを実行する方法
回答済みREST APIでパラメータ有りのJobflowを実行する方法を教えてください。
【利用環境】
Kompira :1.5.5
OS: CentOS7.6
【実現したいこと】
REST APIからKompiraのジョブフローを起動し、パラメータを渡すようなPythonスクリプトの書き方を知りたいです。
PythonスクリプトはKompiraサーバとは別のノードから実行することを想定しています。
【試した事、発生している現象の詳細】
ジョブフローを呼び出すPythonスクリプトを作成し実行してみたのですが、プロセス詳細から実行結果を確認すると、ステータスは「異常終了」となっており、コンソールには下記のようなエラーメッセージが出力されていました。
Variable "B" is not defined
おそらくPythonスクリプトでジョブフローにパラメータを渡している方法が悪いのだと思いますが、どのようにすればよいかご教示いただけないでしょうか。
以下に作成したジョブフローとPythonのスクリプトの抜粋を添付します。
起動したいジョブフロー
| p1 = 'A'|
| p2 = 10 |
print(p1) ->
print(p2)
リクエストを送信するpythonコードの抜粋
parameters = {'p1':'B', 'p2':8}
payload={
'monitoring_mode': 'ABORT_MAIL',
'parameters': parameters
}
r = requests.post(url=url, headers=headers, data=json.dumps(payload))
-
正式なコメント
お問い合わせいただきありがとうございます。
コードを拝見したところ、パラメータの渡し方に問題があるようです。
> #ジョブフローのパラメータ
> parameters = {'p1':'B', 'p2':8}
> payload={
> 'monitoring_mode': 'ABORT_MAIL',
> 'parameters': parameters
> }このようにパラメータを渡した場合、ジョブフローのパラメータ p1 には B という文字列が渡されますが、これはジョブフロー上での B という表記そのものに該当します。
ちょうど下記のようなイメージです。
[p1 = B]
B という名前の変数は未定義であるため、上記を含むジョブフローは実行してもエラー終了してしまいます。
Variable "B" is not defined
今回の場合、変数Bではなく文字列リテラルとしての 「"B"」 をパラメータに渡したい場面だと思いますので、リクエストを送信するpythonコードのパラメータ指定部分を下記のようにしてみていただけますでしょうか。
parameters = {'p1':'"B"', 'p2':8}
payload={
'monitoring_mode': 'ABORT_MAIL',
'parameters': parameters
}なお、同じリクエストをcurlコマンドで行う場合は下記のようになります。
$ curl -H "Authorization: Token <APIToken> \
-H "Accept: application/json" -H "Content-Type: application/json" \
-k -d '{"parameters":{"p1":"\"B\"","p2":"8"}}' \
-XPOST <jobflowのURL>.execute参考になさってみてください。
以上、よろしくお願いいたします。
コメントアクション
サインインしてコメントを残してください。
コメント
1件のコメント