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.
