On 9/9/20 9:45 AM, [email protected] wrote:
> 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.
> 

You can use the json_query filter, which uses the jmespath query language.

I'm sure you can find examples with the search engine of your choice.

Regards
        Racke

> 
> 
> 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] 
> <mailto:[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
> <https://groups.google.com/d/msgid/ansible-project/d54ead7e-e067-4562-a162-c406006eb3cbn%40googlegroups.com?utm_medium=email&utm_source=footer>.


-- 
Ecommerce and Linux consulting + Perl and web application programming.
Debian and Sympa administration. Provisioning with Ansible.

-- 
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/32a8f7bc-ce9b-5d41-cc65-9d4fb383f5be%40linuxia.de.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to