Hello
I have 2 json files:
*File Json1 *
{
"name": "",
"description": "",
"spec": [
{
"question_name": "VM Name",
"question_description": "",
"required": true,
"type": "text",
"variable": "VM_Name",
"min": 0,
"max": 1024,
"default": "",
"choices": "",
"new_question": true
},
{
"question_name": "Select a Veeam Backup Job",
"question_description": "",
"required": true,
"type": "multiplechoice",
"variable": "Job_Name",
"min": null,
"max": null,
"default": "",
"choices":
}
]
}
*File Json2*
“Jobs_List_Data”:["JOB-1" , "JOB-2","JOB-3", "JOB-4"]
I'm stuck in modifying the File Json1 with error:
TASK [json_modify]
*******************************************************************************************************
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c 'echo ~root && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo
/root/.ansible/tmp `"&& mkdir
/root/.ansible/tmp/ansible-tmp-1606499676.6535082-233822-207184568804253 &&
echo ansible-tmp-1606499676.6535082-233822-207184568804253="` echo
/root/.ansible/tmp/ansible-tmp-1606499676.6535082-233822-207184568804253 `"
) && sleep 0'
Using module file
/usr/local/lib/python3.6/site-packages/ansible/modules/json_modify.py
<127.0.0.1> PUT /root/.ansible/tmp/ansible-local-233716vja5qmf5/tmphostnj3p
TO
/root/.ansible/tmp/ansible-tmp-1606499676.6535082-233822-207184568804253/AnsiballZ_json_modify.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x
/root/.ansible/tmp/ansible-tmp-1606499676.6535082-233822-207184568804253/
/root/.ansible/tmp/ansible-tmp-1606499676.6535082-233822-207184568804253/AnsiballZ_json_modify.py
&& sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python3
/root/.ansible/tmp/ansible-tmp-1606499676.6535082-233822-207184568804253/AnsiballZ_json_modify.py
&& sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r
/root/.ansible/tmp/ansible-tmp-1606499676.6535082-233822-207184568804253/ >
/dev/null 2>&1 && sleep 0'
The full traceback is:
File
"/tmp/ansible_json_modify_payload_zjd6hujn/ansible_json_modify_payload.zip/ansible/modules/json_modify.py",
line 38, in main
File "/usr/local/lib/python3.6/site-packages/jsonpointer.py", line 126,
in resolve_pointer
return pointer.resolve(doc, default)
File "/usr/local/lib/python3.6/site-packages/jsonpointer.py", line 204,
in resolve
doc = self.walk(doc, part)
File "/usr/local/lib/python3.6/site-packages/jsonpointer.py", line 272,
in walk
raise JsonPointerException("index '%s' is out of bounds" % (part, ))
fatal: [localhost]: FAILED! => {
"changed": false,
"invocation": {
"module_args": {
"action": "update",
"append": null,
"data": {
"description": "",
"name": "",
"spec": [
{
"choices": "",
"default": "",
"max": 1024,
"min": 0,
"new_question": true,
"question_description": "",
"question_name": "VM Name",
"required": true,
"type": "text",
"variable": "VM_Name"
},
{
"choices": null,
"default": "",
"max": null,
"min": null,
"question_description": "",
"question_name": "Select a Veeam Backup Job",
"required": true,
"type": "multiplechoice",
"variable": "Job_Name"
}
]
},
"extend": null,
"pointer": "/spec/2/choices/",
"update": {
"Backup_Jobs_Lists": [
"JOB-1",
" JOB-2",
"JOB-3",
" JOB-4"
]
}
}
},
* "msg": "index '2' is out of bounds"*
}
The final json file should be like this
*Final Json: *
{
"name": "",
"description": "",
"spec": [
{
"question_name": "VM Name",
"question_description": "",
"required": true,
"type": "text",
"variable": "VM_Name",
"min": 0,
"max": 1024,
"default": "",
"choices": "",
"new_question": true
},
{
"question_name": "Select a Veeam Backup Job",
"question_description": "",
"required": true,
"type": "multiplechoice",
"variable": "Job_Name",
"min": null,
"max": null,
"default": "",
* "choices": ["JOB-1" , "JOB-2", "JOB-3", "JOB-4"]*
}
]
}
Here is my code:
- hosts: localhost
tasks:
- name: load json file
include_vars:
file: surveyjobs.json
name: json1
- debug:
var: json1
- name: load json file
include_vars:
file: Jobs_list.json
name: json2
- debug:
var: json2
- json_modify:
data: "{{json1}}"
pointer: "/spec/2/choices/"
action: update
update: "{{ json2 }}"
register: result
- debug:
var: result.result
Thanks for your help !
--
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/0a756683-0c7a-45cc-8ac1-3f2fd89eb341n%40googlegroups.com.