Got it, thanks for the explanation. I'll try that and see where it gets me.
On Wednesday, June 12, 2019 at 1:21:23 PM UTC-4, Matt Martz wrote: > > The idea, is that if `results` isn't defined, to provide a default for the > until logic to complete. > > You are using `results[4]`, which means it's the 5th element (now I want > to go watch a movie). > > Then in the 5th element of results, you are inspecting the `result` key, > for a value of `success`. > > This just says when `results` is not defined, use the default of [0,1,2,3, > dict(result='NOT_SUCCESS')] > > the 0-3 elements, are useless, and don't matter, it's just there to make > sure that the 5th element ([4]) is a dict/hash that matches your > expectations. > > On Wed, Jun 12, 2019 at 12:11 PM Cade Lambert <[email protected] > <javascript:>> wrote: > >> Can you explain what you're doing with the until line you posted? >> >> So I know what's in task_result.json.results[4].result. Here's what I get >> if I debug as my next task: >> >> - debug: >> var: tasks_list.json.results[4].result >> >> >> TASK [debug] >> ********************************************************************************************************************************************************************************************************************************** >> ok: [localhost] => { >> "tasks_list.json.results[4].result": "success" >> } >> >> That's why I'm confused, because according to that debug, the until line >> should work. >> >> On Wednesday, June 12, 2019 at 12:38:06 PM UTC-4, Matt Martz wrote: >>> >>> You can, but the error is telling you that the JSON response, didn't >>> have a `results` key. You need to account for the fact, that you might not >>> always get the response you expect. >>> >>> Maybe like: >>> >>> until: (task_result.json.results|default([0, 1, 2, 3, >>> dict(result='NOT_SUCCESS')))[4].result == 'success' >>> >>> In any case, your until makes a lot of assumptions about the data you >>> expect to be there, you need to work from the perspective of not having >>> what you expect. >>> >>> On Wed, Jun 12, 2019 at 11:14 AM Cade Lambert <[email protected]> wrote: >>> >>>> I'm writing a playbook to publish new Content View versions and promote >>>> the new version to our Lifecycle Environments using the uri module. I'm >>>> trying to create a task that will query the task ID until it reports a >>>> result of 'success'. I've tried the following: >>>> >>>> - name: Get the tasks list from Satellite >>>> uri: >>>> url: https://satelitlite-server/foreman_tasks/api/tasks >>>> method: GET >>>> body: >>>> order: 'id DESC' >>>> organization_id: 3 >>>> user: "{{ satellite_user }}" >>>> password: "{{ satellite_pass }}" >>>> force_basic_auth: yes >>>> validate_certs: no >>>> body_format: json >>>> register: tasks_list >>>> >>>> - name: Wait for new Content View version to finish publishing >>>> uri: >>>> url: "https://satellite-server/foreman_tasks/api/tasks/{{ >>>> tasks_list.json.results[4].id }}" >>>> method: GET >>>> status_code: 200 >>>> validate_certs: no >>>> user: "{{ satellite_user }}" >>>> password: "{{ satellite_pass }}" >>>> force_basic_auth: yes >>>> body_format: json >>>> register: task_result >>>> until: task_result.json.results[4].result == 'success' >>>> retries: 60 >>>> delay: 20 >>>> >>>> This gives me an error of: >>>> >>>> TASK [Wait for new Content View version to finish publishing] >>>> ********************************************************************************************************************************************************************************* >>>> fatal: [localhost]: FAILED! => {"msg": "The conditional check >>>> 'task_result.json.results[4].result == 'success'' failed. The error was: >>>> error while evaluating conditional (task_result.json.results[4].result == >>>> 'success'): 'dict object' has no attribute 'results'"} >>>> >>>> I'm guessing I can't query a variable that's registered in the same >>>> task? Does anyone know an alternative method other than just pausing the >>>> playbook for a few minutes to let the publish task finish? >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Ansible Project" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/ansible-project/6f35ca5c-1c4c-439c-bf05-42a5ad6fe478%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/ansible-project/6f35ca5c-1c4c-439c-bf05-42a5ad6fe478%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >>> -- >>> Matt Martz >>> @sivel >>> sivel.net >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Ansible Project" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/ansible-project/7c683512-75d6-4707-9689-d76f522adc6a%40googlegroups.com >> >> <https://groups.google.com/d/msgid/ansible-project/7c683512-75d6-4707-9689-d76f522adc6a%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > > -- > Matt Martz > @sivel > sivel.net > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/cb4ded27-4ee4-4956-978e-812cc7caa79f%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
