@Matt - that worked perfectly. I'm assuming that the jinja2 pipeline you
added as a sample works as follows:
It pipes the results from my results variable grabbing only the
json.statuses data structure, selects the attribute *name *that matches the
value *Lucene* and from that data structure or position, look for the first
*isHealthy* key and give me only that result. Do I have that correct?
On Thursday, February 15, 2018 at 5:38:49 PM UTC-5, Matt Martz wrote:
>
> Honestly, I try to stay away from json_query when possible, and stick to
> just standard jinja2 pipelines:
>
> "{{ (results.json.statuses|selectattr('name', 'match',
> 'Lucene')|list|first).isHealthy }}"
>
> You can use a variety of tests instead of `match`, such as `search` or
> `equalto`.
>
> On Thu, Feb 15, 2018 at 4:28 PM, Tito Valentin <[email protected]
> <javascript:>> wrote:
>
>> I have a task that hits a url and returns the results in JSON array like
>> this:
>>
>>
>> 1.
>>>
>>> "json": {
>>> "statuses": [
>>> {
>>> "application": "JIRA",
>>> "completeKey": "com.atlassian.jira.plugins.jira-
>>> healthcheck-plugin:hsqlHealthCheck",
>>> "description": "Checks if the instance is connected
>>> to an HSQL or H2 database",
>>> "documentation": "https://
>>> confluence.atlassian.com/x/1guaEQ",
>>> "failureReason": "You are not using an HSQL or H2
>>> embedded database with a production license.",
>>> "healthy": true,
>>> "id": 0,
>>> "isHealthy": true,
>>> "name": "Embedded database",
>>> "severity": "undefined",
>>> "tag": "Supported Platforms",
>>> "time": 1518726326309
>>> },
>>> {
>>> "application": "JIRA",
>>> "completeKey":
>>> "com.atlassian.jira.plugins.jira-healthcheck-plugin:eolHealthCheck",
>>> "description": "Checks if the running version of
>>> JIRA is approaching, or has reached End of Life.",
>>> "documentation": "
>>> https://confluence.atlassian.com/x/HjnRLg",
>>> "failureReason": "Unable to verify the End of Life
>>> date for version '7.4.x'. The check has not been performed.",
>>> "healthy": true,
>>> "id": 0,
>>> "isHealthy": true,
>>> "name": "End of Life",
>>> "severity": "undefined",
>>> "tag": "Supported Platforms",
>>> "time": 1518726326316
>>> },
>>> {
>>> "application": "JIRA",
>>> "completeKey":
>>>
>>> "com.atlassian.jira.plugins.jira-healthcheck-plugin:luceneSupportHealthCheck"
>>> ,
>>> "description": "Checks the state of the search index
>>> is consistent with the database.",
>>> "documentation": "
>>> https://confluence.atlassian.com/x/9IUfL",
>>> "failureReason": "The issue index is inconsistent
>>> with the database state.",
>>> "healthy": false,
>>> "id": 0,
>>> "isHealthy": false,
>>> "name": "Lucene",
>>> "severity": "major",
>>> "tag": "Indexing",
>>> "time": 1518726326372
>>> },
>>
>>
>> The two tasks that run looks like this:
>>
>> ---
>>
>>
>> - name: check if jira indexing is required and do it
>> hosts: localhost
>> become: no
>> connection: local
>> #vars_files:
>> # - vault.yml
>>
>>
>> tasks:
>> - name: Check for "Lucene" health
>> uri:
>> url: https://example.com/rest/supportHealthCheck/1.0/check/
>> method: GET
>> user: user
>> password: password
>> force_basic_auth: yes
>> body_format: json
>> return_content: yes
>> validate_certs: no
>> status_code: 200
>> register: results
>>
>>
>> - name: Get health result
>> debug: var=item
>> with_items: "{{results|json_query(name_Lucene_query)}}"
>> vars:
>> name_Lucene_query: "statuses.name[?name=='Lucene'].isHealthy"
>>
>>
>> The final result looks like this:
>>
>>
>> 1.
>>>
>>> ###################
>>> ## results / output of "Check for "Lucene" health
>>>
>>> TASK [Check for "Lucene" health]
>>>
>>> **********************************************************************************************************************************************************************************
>>> task path: /home/user/jiraHealth.yml:11
>>>
>>>
>>> "json": {
>>> "statuses": [
>>> {
>>> "application": "JIRA",
>>> "completeKey": "com.atlassian.jira.plugins.jira-
>>> healthcheck-plugin:hsqlHealthCheck",
>>> "description": "Checks if the instance is connected
>>> to an HSQL or H2 database",
>>> "documentation": "https://
>>> confluence.atlassian.com/x/1guaEQ",
>>> "failureReason": "You are not using an HSQL or H2
>>> embedded database with a production license.",
>>> "healthy": true,
>>> "id": 0,
>>> "isHealthy": true,
>>> "name": "Embedded database",
>>> "severity": "undefined",
>>> "tag": "Supported Platforms",
>>> "time": 1518726326309
>>> },
>>> {
>>> "application": "JIRA",
>>> "completeKey":
>>> "com.atlassian.jira.plugins.jira-healthcheck-plugin:eolHealthCheck",
>>> "description": "Checks if the running version of
>>> JIRA is approaching, or has reached End of Life.",
>>> "documentation": "
>>> https://confluence.atlassian.com/x/HjnRLg",
>>> "failureReason": "Unable to verify the End of Life
>>> date for version '7.4.x'. The check has not been performed.",
>>> "healthy": true,
>>> "id": 0,
>>> "isHealthy": true,
>>> "name": "End of Life",
>>> "severity": "undefined",
>>> "tag": "Supported Platforms",
>>> "time": 1518726326316
>>> },
>>> {
>>> "application": "JIRA",
>>> "completeKey":
>>>
>>> "com.atlassian.jira.plugins.jira-healthcheck-plugin:luceneSupportHealthCheck"
>>> ,
>>> "description": "Checks the state of the search index
>>> is consistent with the database.",
>>> "documentation": "
>>> https://confluence.atlassian.com/x/9IUfL",
>>> "failureReason": "The issue index is inconsistent
>>> with the database state.",
>>> "healthy": false,
>>> "id": 0,
>>> "isHealthy": false,
>>> "name": "Lucene",
>>> "severity": "major",
>>> "tag": "Indexing",
>>> "time": 1518726326372
>>> },
>>>
>>> ####################
>>> ## results / output of "Get health result
>>>
>>> TASK [Get health result]
>>>
>>> ******************************************************************************************************************************************************************************************
>>> task path: /home/user/jiraHealth.yml:25
>>> ok: [localhost] => (item=) => {
>>> "changed": false,
>>> "item": ""
>>> }
>>
>>
>> The issue I am having is that my second task is not storing the result I
>> am looking for. What I am trying to do is from all of the data structure, I
>> want to find the one that has the key named *name *with the value of
>> *Lucene* and for that data structure, give me the result of *isHealthy* so
>> that I can use that result to run a third task. As you can see from the
>> output of the data, *isHealthy *is *false* but my second task is not
>> storing that value in *item*. What am I doing wrong here with my filter?
>> Basically, I want to create and run a third task that is like this based on
>> the *isHealthy *value:
>>
>> - name: Reindex db
>> command: runthis
>> when: "{{ name_Lucene_query }}" == false
>>
>>
>> ...but I can't get to that third task to run yet until my second task
>> gets the value I am looking for. Any help is greatly appreciated.
>>
>> --
>> 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] <javascript:>.
>> To post to this group, send email to [email protected]
>> <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/ansible-project/ff35e970-8a2c-427b-b3eb-ea570e1c8931%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/ff35e970-8a2c-427b-b3eb-ea570e1c8931%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Matt Martz
> @sivel
> sivel.net
>
--
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/12b71a0d-94cc-4be8-8d1b-6fc59ae2b536%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.