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.
signature.asc
Description: OpenPGP digital signature
