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.
