J'ai les 2 ressources suivantes définies dans un livre de recettes qui effectue des requêtes HTTP. J'ai essentiellement besoin d'exécuter action 2
basé sur la vérification d'une condition à partir du résultat de action 1
. Si la condition de action 1
ne correspond pas, le livre de recettes doit être mis en veille pendant un certain temps, puis recommencer action 1
.Exécution conditionnelle de ressources
Quelle est la meilleure approche/façon de faire cela?
webhooks_request "Action 1" do
uri "example.net/data1"
post_data ({ 'value1' => '1', 'value2' => '2'})
expected_response_codes [ 200, 201 ]
action :post
end
J'utilise les éléments suivants ruby_block
pour traiter le résultat de action 1
donc je pense qu'il devrait être possible d'exécuter ensuite action 2
sur la base correspondant à la condition.
ruby_block "Parse Response" do
#Parse the result from action 1
end
webhooks_request "Action 2" do
uri "example.net/data2"
post_data ({ 'value1' => '1', 'value2' => '2'})
expected_response_codes [ 200, 201 ]
action :post
end
Merci beaucoup - je vais essayer \ – user1513388
j'ajouterais, si vous voulez sauter # 2 si # 1 expire, puis placez 'not_if {node.runstate ['my_hook'] ['retries'] <0}' (vous devrez peut-être envelopper dans un bloc 'paresseux 'aussi –
@TejayCardon Je peux me tromper (comme je ne l'ai pas testé) mais ma dernière ligne dans le bloc retournerait vrai ou faux, et IIRC (mais vraiment incertain) si le ruby_block renvoie faux la notification ne devrait pas être déclenchée (je dois tester cela pour confirmer ce comportement) – Tensibai