That error is specific to the API you're calling.
To debug, compare and look for difference between the data that you
send in this request, and the data in a task that does succeed.


Dick


On Mon, 24 Jun 2019 at 09:03, AD <[email protected]> wrote:
>
> 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]> 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].
>>> 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/d3eba162-c81e-4311-9fa2-521aef83f85c%40googlegroups.com.
>>> 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.



-- 
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].
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/CAL8fbwPLJM%3Dz8Fjb-FCeGBVFB7coGbKfSqvbyFrjNG0oJkAVug%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to