Hi Dick,
I was able to use combine filter and save the updated json content to a
variable using set_fact. Now, when I try to do PUT request using this
variable in the body I get error. Can you help me with the body syntax
using a set_fact variable ?
- set_fact:
updated_flag: "{{ cluster_result | combine({'traceSyncApp': true})
}}"
- debug:
msg: "{{ updated_flag }}"
- name: Enable Tracesync
uri:
url: <API URL>
method: PUT
validate_certs: no
return_content: yes
status_code: 200
headers:
Content-Type: application/json
Cookie: "{{ login.set_cookie.split(';')[0] }}"
body_format: json
body : "{{ updated_flag }}"
register: cluster_result
fatal: [localhost]: FAILED! => {"changed": false, "connection": "close",
"content": "Request body is invalid.", "content_length": "24",
"content_type": "text/plain", "date": "Mon, 24 Jun 2019 06:58:51 GMT",
"failed": true, "msg": "Status code was not [200]: HTTP Error 400: "}
On Thursday, June 20, 2019 at 9:09:51 PM UTC-7, Dick Visser wrote:
>
> You need to use that in a loop as the results variable is a list of dicts.
> Or drop the loop if you only use it once so the result will be a dict.
>
>
> Dick
>
> On Thu, 20 Jun 2019 at 20:12, AD <[email protected] <javascript:>>
> wrote:
>
>> Hi Dick,
>>
>> For this to work, I need to convert the output to a dictionary. Hw can I
>> do that ?
>>
>> fatal: [localhost]: FAILED! => {"msg": "|combine expects dictionaries,
>> got [{u'bandwidthControlApp': F
>>
>> On Thursday, June 20, 2019 at 4:10:22 AM UTC-7, Dick Visser wrote:
>>>
>>> So you can use something like this for the PUT request:
>>>
>>> "{{ firstresult | combine({'mipUser': true}) }}"
>>>
>>> On Thu, 20 Jun 2019 at 10:12, Dick Visser <[email protected]> wrote:
>>> >
>>> > The combine filter should allow you to do this:
>>> >
>>> >
>>> https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#combining-hashes-dictionaries
>>>
>>> >
>>> >
>>> > On Thu, 20 Jun 2019 at 09:28, AD <[email protected]> wrote:
>>> >>
>>> >> Hello,
>>> >>
>>> >> I'm trying to update an attribute from a GET API JSON result and do a
>>> PUT request along with the entire API data with only one attribute change.
>>> Please advice on the format for PUT Req Task ?
>>> >>
>>> >> 1. Get Request for a given API call
>>> >> 2. From the above json data in step1, I need to update only one
>>> attribute: mipUser (From "false To "true) and do a PUT request along with
>>> the other data unchanged in the json.
>>> >>
>>> >>
>>> >> - name: GET Request for CLUSTERS
>>> >> uri:
>>> >> url: https://zsapi.com/BETA/{{ item }}
>>> >> method: GET
>>> >> validate_certs: no
>>> >> return_content: yes
>>> >> status_code: 200
>>> >> headers:
>>> >> Content-Type: application/json
>>> >> Cookie: "{{ login.set_cookie.split(';')[0] }}"
>>> >> body_format: json
>>> >> with_items: "{{ cluster }}"
>>> >> register: cluster_result
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> ok: [localhost] => {
>>> >> "msg": [
>>> >> {
>>> >> "bandwidthControlApp": true,
>>> >> "cloud": "BETA",
>>> >> "createTime": 1550875210,
>>> >> "datacenter": {
>>> >> "id": 526,
>>> >> "name": "FMT1"
>>> >> },
>>> >> "description": "cluster with VIP 169.254.1.100",
>>> >> "disabled": false,
>>> >> "id": 2334,
>>> >> "lastModifiedTime": 1560896398,
>>> >> "lastModifiedUser": {
>>> >> "id": 1009,
>>>
>> >> "name": "[email protected]"
>>> >> },
>>> >> "mipUser": false,
>>> >> "mtsInstances": [],
>>> >> "name": "fmt1",
>>> >> "rateLimit": true,
>>> >> }
>>> >> ]
>>> >> }
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> 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/1c09b86a-eaf1-4e42-a4d9-b75168c4e2b3%40googlegroups.com.
>>>
>>>
>>> >> For more options, visit https://groups.google.com/d/optout.
>>> >
>>> > --
>>> > Sent from a mobile device - please excuse the brevity, spelling and
>>> punctuation.
>>>
>>>
>>>
>>> --
>>> Dick Visser
>>> Trust & Identity Service Operations Manager
>>> GÉANT
>>>
>> --
>> 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/d3eba162-c81e-4311-9fa2-521aef83f85c%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/d3eba162-c81e-4311-9fa2-521aef83f85c%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> Sent from a mobile device - please excuse the brevity, spelling and
> punctuation.
>
--
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/86e78f2e-b0cd-48a3-9f12-32729024bb19%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.