I guess I was staring at this too long and was referencing the wrong variable, or I got lost in the JSON output of the results, but the answer ended up being task_result.json.result == 'success', which makes perfect sense.
Now I just need to figure out how to do this, in a loop, for each lifecycle environment promotion. On Wednesday, June 12, 2019 at 1:26:26 PM UTC-4, Cade Lambert wrote: > > 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]> 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]. >>> 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/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/4f47a445-163c-417d-ba2e-7cf2ac46bd81%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
