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.

Reply via email to