Closed kr3ator closed 4 years ago
@kr3ator Can you attach or unicast XML from device
you can use
<command> | display xml
@vnitinv
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/19.3R0/junos">
<bfd-session-information xmlns="http://xml.juniper.net/junos/19.3R0/junos-bfd" junos:style="extensive">
<bfd-session>
<session-neighbor>172.16.1.10</session-neighbor>
<session-state>Up</session-state>
<session-interface>et-0/0/48.0</session-interface>
<session-detection-time>0.900</session-detection-time>
<session-transmission-interval>0.300</session-transmission-interval>
<session-adaptive-multiplier>3</session-adaptive-multiplier>
<bfd-client>
<client-name>OSPF realm ospf-v2 Area 0.0.0.0</client-name>
<client-transmission-interval>0.300</client-transmission-interval>
<client-reception-interval>0.300</client-reception-interval>
</bfd-client>
<session-up-time>00:15:58</session-up-time>
<previous-down-time>00:00:01</previous-down-time>
<local-diagnostic>None</local-diagnostic>
<remote-diagnostic>None</remote-diagnostic>
<session-version>1</session-version>
<remote-state>Up</remote-state>
<session-type>Single hop BFD</session-type>
<minimum-asynchronous-interval>0.300</minimum-asynchronous-interval>
<minimum-slow-interval>1.000</minimum-slow-interval>
<adaptive-asynchronous-transmission-interval>0.300</adaptive-asynchronous-transmission-interval>
<adaptive-reception-interval>0.300</adaptive-reception-interval>
<minimum-transmission-interval>0.300</minimum-transmission-interval>
<minimum-reception-interval>0.300</minimum-reception-interval>
<detection-multiplier>3</detection-multiplier>
<neighbor-minimum-transmission-interval>0.300</neighbor-minimum-transmission-interval>
<neighbor-minimum-reception-interval>0.300</neighbor-minimum-reception-interval>
<neighbor-session-multiplier>3</neighbor-session-multiplier>
<local-discriminator>16</local-discriminator>
<remote-discriminator>16</remote-discriminator>
<echo-mode-desired>disabled</echo-mode-desired>
<echo-mode-state>inactive</echo-mode-state>
<neighbor-fate>Remote is control-plane independent</neighbor-fate>
<no-refresh> Session ID: 0x0</no-refresh>
</bfd-session>
<bfd-session>
<session-neighbor>172.16.1.22</session-neighbor>
<session-state>Up</session-state>
<session-interface>et-0/0/49.0</session-interface>
<session-detection-time>0.900</session-detection-time>
<session-transmission-interval>0.300</session-transmission-interval>
<session-adaptive-multiplier>3</session-adaptive-multiplier>
<bfd-client>
<client-name>OSPF realm ospf-v2 Area 0.0.0.0</client-name>
<client-transmission-interval>0.300</client-transmission-interval>
<client-reception-interval>0.300</client-reception-interval>
</bfd-client>
<session-up-time>00:15:58</session-up-time>
<previous-down-time>00:00:01</previous-down-time>
<local-diagnostic>None</local-diagnostic>
<remote-diagnostic>None</remote-diagnostic>
<session-version>1</session-version>
<remote-state>Up</remote-state>
<session-type>Single hop BFD</session-type>
<minimum-asynchronous-interval>0.300</minimum-asynchronous-interval>
<minimum-slow-interval>1.000</minimum-slow-interval>
<adaptive-asynchronous-transmission-interval>0.300</adaptive-asynchronous-transmission-interval>
<adaptive-reception-interval>0.300</adaptive-reception-interval>
<minimum-transmission-interval>0.300</minimum-transmission-interval>
<minimum-reception-interval>0.300</minimum-reception-interval>
<detection-multiplier>3</detection-multiplier>
<neighbor-minimum-transmission-interval>0.300</neighbor-minimum-transmission-interval>
<neighbor-minimum-reception-interval>0.300</neighbor-minimum-reception-interval>
<neighbor-session-multiplier>3</neighbor-session-multiplier>
<local-discriminator>17</local-discriminator>
<remote-discriminator>17</remote-discriminator>
<echo-mode-desired>disabled</echo-mode-desired>
<echo-mode-state>inactive</echo-mode-state>
<neighbor-fate>Remote is control-plane independent</neighbor-fate>
<no-refresh> Session ID: 0x0</no-refresh>
</bfd-session>
<bfd-session>
<session-neighbor>192.168.100.0</session-neighbor>
<session-state>Up</session-state>
<session-interface></session-interface>
<session-detection-time>0.900</session-detection-time>
<session-transmission-interval>0.300</session-transmission-interval>
<session-adaptive-multiplier>3</session-adaptive-multiplier>
<bfd-client>
<client-name>BGP</client-name>
<client-transmission-interval>0.300</client-transmission-interval>
<client-reception-interval>0.300</client-reception-interval>
</bfd-client>
<session-up-time>00:05:56</session-up-time>
<previous-down-time>00:00:02</previous-down-time>
<local-diagnostic>None</local-diagnostic>
<remote-diagnostic>None</remote-diagnostic>
<session-version>1</session-version>
<remote-state>Up</remote-state>
<session-type>Multi hop BFD</session-type>
<minimum-asynchronous-interval>0.300</minimum-asynchronous-interval>
<minimum-slow-interval>1.000</minimum-slow-interval>
<adaptive-asynchronous-transmission-interval>0.300</adaptive-asynchronous-transmission-interval>
<adaptive-reception-interval>0.300</adaptive-reception-interval>
<minimum-transmission-interval>0.300</minimum-transmission-interval>
<minimum-reception-interval>0.300</minimum-reception-interval>
<detection-multiplier>3</detection-multiplier>
<neighbor-minimum-transmission-interval>0.300</neighbor-minimum-transmission-interval>
<neighbor-minimum-reception-interval>0.300</neighbor-minimum-reception-interval>
<neighbor-session-multiplier>3</neighbor-session-multiplier>
<local-discriminator>19</local-discriminator>
<remote-discriminator>20</remote-discriminator>
<echo-mode-desired>disabled</echo-mode-desired>
<echo-mode-state>inactive</echo-mode-state>
<neighbor-fate>Remote is control-plane independent</neighbor-fate>
<multihop>Multi-hop</multihop>
<multihop-routing-table-index>0</multihop-routing-table-index>
<multihop-local-address>192.168.100.12</multihop-local-address>
<no-refresh> Session ID: 0x0</no-refresh>
</bfd-session>
<bfd-session>
<session-neighbor>192.168.100.1</session-neighbor>
<session-state>Up</session-state>
<session-interface></session-interface>
<session-detection-time>0.900</session-detection-time>
<session-transmission-interval>0.300</session-transmission-interval>
<session-adaptive-multiplier>3</session-adaptive-multiplier>
<bfd-client>
<client-name>BGP</client-name>
<client-transmission-interval>0.300</client-transmission-interval>
<client-reception-interval>0.300</client-reception-interval>
</bfd-client>
<session-up-time>00:15:56</session-up-time>
<previous-down-time>00:00:03</previous-down-time>
<local-diagnostic>None</local-diagnostic>
<remote-diagnostic>None</remote-diagnostic>
<session-version>1</session-version>
<remote-state>Up</remote-state>
<session-type>Multi hop BFD</session-type>
<minimum-asynchronous-interval>0.300</minimum-asynchronous-interval>
<minimum-slow-interval>1.000</minimum-slow-interval>
<adaptive-asynchronous-transmission-interval>0.300</adaptive-asynchronous-transmission-interval>
<adaptive-reception-interval>0.300</adaptive-reception-interval>
<minimum-transmission-interval>0.300</minimum-transmission-interval>
<minimum-reception-interval>0.300</minimum-reception-interval>
<detection-multiplier>3</detection-multiplier>
<neighbor-minimum-transmission-interval>0.300</neighbor-minimum-transmission-interval>
<neighbor-minimum-reception-interval>0.300</neighbor-minimum-reception-interval>
<neighbor-session-multiplier>3</neighbor-session-multiplier>
<local-discriminator>18</local-discriminator>
<remote-discriminator>19</remote-discriminator>
<echo-mode-desired>disabled</echo-mode-desired>
<echo-mode-state>inactive</echo-mode-state>
<neighbor-fate>Remote is control-plane independent</neighbor-fate>
<multihop>Multi-hop</multihop>
<multihop-routing-table-index>0</multihop-routing-table-index>
<multihop-local-address>192.168.100.12</multihop-local-address>
<no-refresh> Session ID: 0x0</no-refresh>
</bfd-session>
<sessions>4</sessions>
<clients>4</clients>
<cumulative-transmission-rate>13.3</cumulative-transmission-rate>
<cumulative-reception-rate>13.3</cumulative-reception-rate>
</bfd-session-information>
<cli>
<banner>{master:0}</banner>
</cli>
</rpc-reply>
Today I tried to get this nesting working with custom BGP neighbor and it worked for couple of iterations and then suddenly stopped.
My bgp.yml Table/View file:
---
bgpTable:
rpc: get-bgp-neighbor-information
item: bgp-peer
view: bgpView
key: peer-id
bgpView:
fields:
local_as: local-as
peer_as: peer-as
local_address: local-address
peer_id: peer-id
local_id: local-id
peer_state: peer-state
nrlis: peer-restart-nlri-negotiated
ribs: _bgpRibTable
_bgpRibTable:
item: bgp-rib
view: _bgpRibView
_bgpRibView:
fields:
name: name
active_prefix_count: active-prefix-count
accepted_prefix_count: accepted-prefix-count
received_prefix_count: received-prefix-count
advertised_prefix_count: advertised-prefix-count
Output from ansible running juniper_junos_table module:
{
"resource": [
{
"local_address": "1.254.10.2+179",
"local_as": "65500",
"local_id": "1.254.10.2",
"nrlis": "inet-unicast",
"peer_as": "550",
"peer_id": "1.254.10.1",
"peer_state": "Established",
"ribs": [
{
"accepted_prefix_count": "3",
"active_prefix_count": "3",
"advertised_prefix_count": "8",
"name": "MGMT.inet.0",
"received_prefix_count": "3"
}
]
}
...ommited...
]
}
Corresponding XML answer:
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/18.2R3/junos">
<bgp-information xmlns="http://xml.juniper.net/junos/18.2R3/junos-routing">
<bgp-peer junos:style="detail">
<peer-address>1.254.10.9+40409</peer-address>
<peer-as>550</peer-as>
<local-address>1.254.10.10+179</local-address>
<local-as>65500</local-as>
<peer-group>MGMT</peer-group>
<peer-cfg-rti>MGMT</peer-cfg-rti>
<peer-fwd-rti>MGMT</peer-fwd-rti>
<peer-type>External</peer-type>
<peer-state>Established</peer-state>
<peer-flags>Sync</peer-flags>
<last-state>OpenConfirm</last-state>
<last-event>RecvKeepAlive</last-event>
<last-error>None</last-error>
<bgp-option-information xmlns="http://xml.juniper.net/junos/18.2R3/junos-routing">
<export-policy>
direct_only
</export-policy>
<bgp-options>Multihop Preference LocalAddress Ttl PeerAS Refresh</bgp-options>
<bgp-options2></bgp-options2>
<bgp-options-extended></bgp-options-extended>
<local-address>1.254.10.10</local-address>
<holdtime>90</holdtime>
<preference>170</preference>
</bgp-option-information>
<flap-count>1</flap-count>
<last-flap-event>Restart</last-flap-event>
<peer-id>1.254.10.9</peer-id>
<local-id>10.200.1.252</local-id>
<active-holdtime>60</active-holdtime>
<keepalive-interval>20</keepalive-interval>
<group-index>0</group-index>
<peer-index>0</peer-index>
<snmp-index>1</snmp-index>
<bgp-peer-iosession>
<iosession-thread-name>bgpio-0</iosession-thread-name>
<iosession-state>Enabled</iosession-state>
</bgp-peer-iosession>
<bgp-bfd>
<bfd-configuration-state>disabled</bfd-configuration-state>
<bfd-operational-state>down</bfd-operational-state>
</bgp-bfd>
<peer-restart-nlri-configured>inet-unicast</peer-restart-nlri-configured>
<nlri-type-peer>inet-unicast</nlri-type-peer>
<nlri-type-session>inet-unicast</nlri-type-session>
<peer-refresh-capability>2</peer-refresh-capability>
<peer-stale-route-time-configured>300</peer-stale-route-time-configured>
<peer-restart-time-received>1</peer-restart-time-received>
<peer-restart-flags-received>Restarting</peer-restart-flags-received>
<peer-restart-nlri-received>inet-unicast</peer-restart-nlri-received>
<peer-restart-nlri-can-save-state>inet-unicast</peer-restart-nlri-can-save-state>
<peer-restart-nlri-state-saved>inet-unicast</peer-restart-nlri-state-saved>
<peer-restart-nlri-negotiated>inet-unicast</peer-restart-nlri-negotiated>
<peer-end-of-rib-received>inet-unicast</peer-end-of-rib-received>
<peer-end-of-rib-sent>inet-unicast</peer-end-of-rib-sent>
<peer-end-of-rib-scheduled></peer-end-of-rib-scheduled>
<peer-no-llgr-helper/>
<peer-4byte-as-capability-advertised>550</peer-4byte-as-capability-advertised>
<peer-addpath-not-supported/>
<bgp-rib junos:style="detail">
<name>MGMT.inet.0</name>
<rib-bit>20000</rib-bit>
<bgp-rib-state>BGP restart is complete</bgp-rib-state>
<vpn-rib-state>VPN restart is complete</vpn-rib-state>
<send-state>in sync</send-state>
<active-prefix-count>3</active-prefix-count>
<received-prefix-count>3</received-prefix-count>
<accepted-prefix-count>3</accepted-prefix-count>
<suppressed-prefix-count>0</suppressed-prefix-count>
<advertised-prefix-count>8</advertised-prefix-count>
</bgp-rib>
<last-received>2</last-received>
<last-sent>17</last-sent>
<last-checked>483902</last-checked>
<input-messages>24204</input-messages>
<input-updates>11</input-updates>
<input-refreshes>0</input-refreshes>
<input-octets>460216</input-octets>
<output-messages>26875</output-messages>
<output-updates>1</output-updates>
<output-refreshes>0</output-refreshes>
<output-octets>510690</output-octets>
<bgp-output-queue>
<number>1</number>
<count>0</count>
<table-name>MGMT.inet.0</table-name>
<rib-adv-nlri>inet-unicast</rib-adv-nlri>
</bgp-output-queue>
</bgp-peer>
...ommited...
</bgp-information>
<cli>
<banner></banner>
</cli>
</rpc-reply>
I've tried to run it several times now and I always get the same error as with BFD (the only change is in the name of the netsted table):
...ommited...
line 401, in _remove_values_conditions
TypeError: Value of unknown type: <class 'jnpr.junos.factory.Table._bgpRibTable'>, _bgpRibTable:10.200.2.2: 0 items
...ommited...
I've managed to figure it out. This is a duplicate of https://github.com/Juniper/ansible-junos-stdlib/issues/379
I've prepared a patch for this in the junos-stdlib repo.
I'm trying to use the default bfd.yml Table/View to dump the information on the BFD sessions. In this file the "bfd_client" field refers back to other Table/View which doesn't seem to work correctly.
After populating the table with get() method and viewing it in the console all the normal fields are populated correctly but for the "bfd_client" I get:
('bfd_client', _BfdSessionClientTable:10.200.2.1: 0 items)
Running the same with juniper_junos_table module with Ansible yields an error:
File /usr/lib64/python2.7/runpy.py, line 176, in run_module fname, loader, pkg_name File /usr/lib64/python2.7/runpy.py, line 82, in _run_module_code mod_name, mod_fname, mod_loader, pkg_name File /usr/lib64/python2.7/runpy.py, line 72, in _run_code exec code in run_globals File /tmp/ansible_juniper_junos_table_payload_FAYu62/ansible_juniper_junos_table_payload.zip/ansible/modules/juniper_junos_table.py, line 477, in <module> File /tmp/ansible_juniper_junos_table_payload_FAYu62/ansible_juniper_junos_table_payload.zip/ansible/modules/juniper_junos_table.py, line 473, in main File /tmp/ansible_juniper_junos_table_payload_FAYu62/ansible_juniper_junos_table_payload.zip/ansible/module_utils/juniper_junos_common.py, line 781, in exit_json File /tmp/ansible_juniper_junos_table_payload_FAYu62/ansible_juniper_junos_table_payload.zip/ansible/module_utils/basic.py, line 2072, in exit_json File /tmp/ansible_juniper_junos_table_payload_FAYu62/ansible_juniper_junos_table_payload.zip/ansible/module_utils/basic.py, line 2065, in _return_formatted File /tmp/ansible_juniper_junos_table_payload_FAYu62/ansible_juniper_junos_table_payload.zip/ansible/module_utils/basic.py, line 418, in remove_values File /tmp/ansible_juniper_junos_table_payload_FAYu62/ansible_juniper_junos_table_payload.zip/ansible/module_utils/basic.py, line 401, in _remove_values_conditions TypeError: Value of unknown type: <class 'jnpr.junos.factory.Table._BfdSessionClientTable'>, _BfdSessionClientTable:10.200.2.1: 0 items"