Looping over JSON output from Arista

15 views
Skip to first unread message

Leo Izbicki

unread,
Nov 17, 2014, 4:57:42 PM11/17/14
to ansible...@googlegroups.com
I'm playing with Ansible+Arista and I'm able to receive JSON back about the arista device. As an example, I am looking at interface status. While I am able to receive and display information about a single value/pair from the array, how can I loop to receive information on every item in the array?

Example JSON received:

 TASK: [debug var=eos_command_output] ****************************************** 
ok: [example.host] => {
    "eos_command_output": {
        "changed": false, 
        "invocation": {
            "module_args": "", 
            "module_name": "eos_command"
        }, 
        "output": [
            {
                "command": "show interfaces status", 
                "response": {
                    "interfaceStatuses": {
                        "Ethernet1": {
                            "autoNegotiateActive": false, 
                            "autoNegotigateActive": false, 
                            "bandwidth": 10000000000, 
                            "description": "example.description|span", 
                            "duplex": "duplexFull", 
                            "interfaceType": "10GBASE-SR", 
                            "linkStatus": "connected", 
                            "vlanInformation": {
                                "interfaceForwardingModel": "bridged", 
                                "interfaceMode": "tap"
                            }
                        }, 
                        "Ethernet10": {
                            "autoNegotiateActive": false, 
                            "autoNegotigateActive": false, 
                            "bandwidth": 10000000000, 
                            "description": "", 
                            "duplex": "duplexFull", 
                            "interfaceType": "Not Present", 
                            "linkStatus": "errdisabled", 
                            "vlanInformation": {
                                "interfaceForwardingModel": "bridged", 
                                "interfaceMode": "bridged", 
                                "vlanId": 1
                            }


Working example:

- name: show the optic in Ethernet1
      debug: msg="Optic in Ethernet1- {{eos_command_output['output'][0]['respons
e']['interfaceStatuses']['Ethernet1']['interfaceType'] }}"

yields:

ok: [example.host1] => {
    "msg": "Optic in Ethernet1- Not Present"
}
ok: [example.host2] => {
    "msg": "Optic in Ethernet1- 10GBASE-SR"

What I'm trying to do:

- name: show the optic in each port
      debug: msg="Optic in {{ eos_command_output['output'][0]['respons
e']['interfaceStatuses'] }} -  {{ interfaceType }}

This doesn't work, and so here I am. 

Desired output:

ok: [example.host1] => {
    "msg": "Optic in Ethernet1- Not Present"
    "msg": "Optic in Ethernet10- Not Present"
}
ok: [example.host2] => {
    "msg": "Optic in Ethernet1- 10GBASE-SR"
    "msg": "Optic in Ethernet10- Not Present"

Thanks!

Leo 


Reply all
Reply to author
Forward
0 new messages