'Ansible sctask parsing
I am fetching Service Now sctask#. I am able to call the API and got the required sctasks and descriptions, but struggling to parse it out since bad in string management.
output
msg": {
"result": [
{
"active": "true",
"activity_due": "",
"additional_assignee_list": "",
"approval": "not requested",
"approval_history": "",
"approval_set": "",
"assigned_to": {
"link": "url",
"value": "value"
},
"assignment_group": {
"link": "group name",
"value": "value"
},
"number": "SCTASK0000007",
Code
- name: GET SCTASKS
ignore_errors: yes
uri:
url: https://abc.service-now.com/api/now/table/sc_task?sysparm_query=assignment_group.name=mygroup^active=1
user: username
password: password
method: GET
body_format: json
register: output
- set_fact:
tasknum: "{{ output.json | json_query(query) }}"
vars:
query: "[].[result].[number].value"
- name: Print all Task numbers
debug:
msg: "{{ item}}"
with_items:
- "{{ tasknum }}"
Any help, appreciated. Thanks!!
Solution 1:[1]
You create a list of attribute's number values. There is only one item in the list result
result:
- active: 'true'
activity_due: ''
additional_assignee_list: ''
approval: not requested
approval_history: ''
approval_set: ''
assigned_to:
link: url
value: value
assignment_group:
link: group name
value: value
number: SCTASK0000007
Therefore, the task below
- debug:
msg: "{{ result|json_query(_query) }}"
vars:
_query: "[].{scnumber: number}"
gives a list with one item too
msg:
- scnumber: SCTASK0000007
There is only one attribute selected from the dictionary. It would be simpler to create a list of the values only
- set_fact:
scnumbers: "{{ result|json_query(_query) }}"
vars:
_query: "[].number"
gives
scnumbers:
- SCTASK0000007
Then, the map attribute would also create the list
- set_fact:
scnumbers: "{{ result|map(attribute='number')|list }}"
Solution 2:[2]
Issue is resolved with the following code.
- name: print tasknum
debug: msg="{{ jsoncontent.json | json_query(query) }}"
vars:
query: "result[*].{scnumber: number}"
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Vladimir Botka |
| Solution 2 | user312307 |
