---
- hosts: localhost
tasks:
- set_fact:
my_data: "{{ lookup('file', 'data.json') | from_json }}"

- debug:
msg: "{{ my_data.products | json_query(query) }}"
vars:
query: "[?(@.chartName == 'workload-manager')]"

On Wed, Sep 9, 2020 at 1:40 PM Stefan Hornburg (Racke) <[email protected]>
wrote:

> 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
> .
>


-- 
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/CAFwWkHrha%3DxPRRQJCSL_1eUbU%3DQW2%3DBpN2%3DfkHc3sKD_Fhnhpg%40mail.gmail.com.

Reply via email to