Abhijeet,

thanks for that, it looks interesting, but I would like to try to see if 
there is a solution with as minimal extra libraries needed. Trying to keep 
it within the Ansible sphere & use Ansible/Jinja2 filters or regex as much 
as possible.
It may not be possible, I don't know, but the end customer wants to keep 
the coding within Ansible as much as possible & not be reliant on addition 
packages. Not an easy task but I do need to find out.



On Wednesday, 9 September 2020 at 08:38:59 UTC+1 Abhijeet Kasurde wrote:

> You can read about 
>
>    - jmespath - https://jmespath.org/
>    - Use jsonpath - https://jsonpath.com, you may end up something like 
>    this
>    
>  $.products[?(@.chartName == 'workload-manager')]
>
> You can take this free course - 
> https://kodekloud.com/courses/enrolled/635226 to know more about JSON 
> Path.
>
>
> On Wed, Sep 9, 2020 at 12:55 PM [email protected] <[email protected]> 
> wrote:
>
>> Tom,
>>
>> thanks for that reply, but it is way beyond my current experience.
>>
>> but looking at your reply & what i am looking for it doesn't seem to 
>> match.
>>
>> Under 'products' you can see there are several "groups" using the same 
>> keys but potentially different values, with nothing unique that i can use 
>> to show the difference between them, other the the values for each key. I 
>> want to understand if I can 'sort' through the response body, find the 
>> required 'name' & associate the correct 'status.state' to it.
>>
>> Your example only shows one 'group' with clear associations, my response 
>> body has multiple similar keys but different values.
>>
>> Thanks for the response though, but I can't see how it would help me.
>>
>>
>>
>> On Wednesday, 9 September 2020 at 08:14:32 UTC+1 [email protected] 
>> wrote:
>>
>>> HI
>>>
>>> from programming view, you should decode json string to a data structure 
>>> (hash), then access to the hash.
>>>
>>> my test:
>>>
>>> $ cat a.json
>>>
>>> {"a":123,"b":456,"c":789}
>>>
>>>
>>> $ perl -MJSON -le 'open 
>>> FD,"a.json";$str=<FD>;$hash=JSON->new->decode($str);print $hash->{c}'
>>>
>>> 789
>>>
>>>
>>> Thanks.
>>>
>>>
>>>
>>>
>>>
>>> On Wed, Sep 9, 2020 at 2:59 PM [email protected] <[email protected]> 
>>> wrote:
>>>
>>>> Morning all,
>>>>
>>>> have had this question from a co-worker & not managed to work out how 
>>>> do do it. Any help is greatly appreciated as I can see this coming up 
>>>> several times in the future as well.
>>>>
>>>> We have the following response body
>>>>
>>>> {
>>>>
>>>>     "products": [
>>>>
>>>>         {
>>>>
>>>>             "chartName": "action-orchestrator",
>>>>
>>>>             "installTime": 1599482114,
>>>>
>>>>             "modifiedTime": 1599482114,
>>>>
>>>>             "name": "Action Orchestrator",
>>>>
>>>>             "revision": 1,
>>>>
>>>>             "status": {
>>>>
>>>>                 "message": "Product is ready",
>>>>
>>>>                 "progressPercentage": 100,
>>>>
>>>>                 "state": "running"
>>>>
>>>>             },
>>>>
>>>>             "version": [
>>>>
>>>>                 "5.2.0"
>>>>
>>>>             ]
>>>>
>>>>         },
>>>>
>>>>         {
>>>>
>>>>             "chartName": "cloudcenter-shared",
>>>>
>>>>             "installTime": 1599483017,
>>>>
>>>>             "modifiedTime": 1599483017,
>>>>
>>>>             "name": "cloudcenter-shared",
>>>>
>>>>             "revision": 1,
>>>>
>>>>             "status": {
>>>>
>>>>                 "message": "Product is ready",
>>>>
>>>>                 "progressPercentage": 100,
>>>>
>>>>                 "state": "running"
>>>>
>>>>             },
>>>>
>>>>             "version": [
>>>>
>>>>                 "5.4.0"
>>>>
>>>>             ]
>>>>
>>>>         },
>>>>
>>>>         {
>>>>
>>>>             "chartName": "common-framework",
>>>>
>>>>             "installTime": 1599469174,
>>>>
>>>>             "modifiedTime": 1599469174,
>>>>
>>>>             "name": "Suite Admin",
>>>>
>>>>             "revision": 1,
>>>>
>>>>             "status": {
>>>>
>>>>                 "message": "Product is ready",
>>>>
>>>>                 "progressPercentage": 100,
>>>>
>>>>                 "state": "running"
>>>>
>>>>             },
>>>>
>>>>             "version": [
>>>>
>>>>                 "5.2.0"
>>>>
>>>>             ]
>>>>
>>>>         },
>>>>
>>>>         {
>>>>
>>>>             "chartName": "workload-manager",
>>>>
>>>>             "installTime": 1599483064,
>>>>
>>>>             "modifiedTime": 1599483064,
>>>>
>>>>             "name": "Workload Manager",
>>>>
>>>>             "revision": 1,
>>>>
>>>>             "status": {
>>>>
>>>>                 "message": "Waiting for product to be ready",
>>>>
>>>>                 "progressPercentage": 67,
>>>>
>>>>                 "state": "creating"
>>>>
>>>>             },
>>>>
>>>>             "version": [
>>>>
>>>>                 "5.4.0"
>>>>
>>>>             ]
>>>>
>>>>         }
>>>>
>>>>     ],
>>>>
>>>>     "status": {
>>>>
>>>>         "message": "Product install success",
>>>>
>>>>         "progressPercentage": 100,
>>>>
>>>>         "state": "running"
>>>>
>>>>     }
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>> What we need to do is search through 'products', & check that the 
>>>> 'status.state' is 'running' for a specific 'name', in our case 'Workload 
>>>> Manager' 
>>>>
>>>> I can't work out how to provide the search, with the expected result 
>>>> for the co-wokrer to use with an 'until' module.
>>>>
>>>> The idea is to only execute the next task, when the 'status.state' 
>>>> changes to 'running'.
>>>>
>>>>
>>>> Hope this makes sense!
>>>>
>>>>
>>>> Regards
>>>>
>>>> -- 
>>>> 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 view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/ansible-project/14ccb917-6782-48c5-9d9d-89dafb336d47n%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/ansible-project/14ccb917-6782-48c5-9d9d-89dafb336d47n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> 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 view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/c41801fe-83b3-4f23-9cda-6578c1559321n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/c41801fe-83b3-4f23-9cda-6578c1559321n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>
> -- 
> Thanks,
> Abhijeet Kasurde
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/d54ead7e-e067-4562-a162-c406006eb3cbn%40googlegroups.com.

Reply via email to