diff --git a/inventory_provider/nokia.py b/inventory_provider/nokia.py index b988883ac815cd16de3a7a7b2d78305a9400d90f..9107280b7fa9cf9f09a16eb6a2d0a881461a889a 100644 --- a/inventory_provider/nokia.py +++ b/inventory_provider/nokia.py @@ -141,6 +141,12 @@ STATE_FILTER = """<filter> </nokia-state:ipv6> </nokia-state:interface> </nokia-state:vprn> + <nokia-state:epipe> + <nokia-state:sap> + <nokia-state:sap-id/> + <nokia-state:oper-state/> + <nokia-state:sap/> + </nokia-state:epipe> </nokia-state:service> </nokia-state:state> </filter>""" @@ -239,6 +245,14 @@ def get_interfaces_state(state_doc): yield details +def get_epipes_state(state_doc): + for epipe in state_doc.findall('./state/service/epipe'): + yield { + "name": epipe.find('sap/sap-id').text, + "oper-state": epipe.find('oper-state').text, + } + + @lru_cache def get_pxc_ports(netconf_config): # these ports will be ignored for the purposes of the update diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 79523040e01898fad85dd94c4276a3892b344cfe..5901a8923caa45271837ac57b13d5066798788d0 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -733,7 +733,8 @@ def snmp_refresh_interfaces_nokia( _interface_info(port, "port-id") for port in nokia.get_ports_state(state_doc) ) lags = (_interface_info(lag, "name") for lag in nokia.get_lags_state(state_doc)) - all_interfaces = list(itertools.chain(interfaces, ports, lags)) + epipes = (_interface_info(epipe, "name") for epipe in nokia.get_epipes_state(state_doc)) + all_interfaces = list(itertools.chain(interfaces, ports, lags, epipes)) rp = redis.pipeline() rp.set(f'snmp-interfaces:{hostname}', json.dumps(all_interfaces)) diff --git a/test/data/nokia/rt0.ath.gr.lab.office.geant.net-state.xml b/test/data/nokia/rt0.ath.gr.lab.office.geant.net-state.xml new file mode 100644 index 0000000000000000000000000000000000000000..45a679ac70b391bf79d31bea1948187255e40656 --- /dev/null +++ b/test/data/nokia/rt0.ath.gr.lab.office.geant.net-state.xml @@ -0,0 +1,225 @@ +<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> + <state xmlns="urn:nokia.com:sros:ns:yang:sr:state"> + <service> + <epipe> + <service-name>GEANT_EPIPE_121984</service-name> + <oper-service-id>400</oper-service-id> + <oper-state>up</oper-state> + <sap-count>1</sap-count> + <sdp-bind-count>1</sdp-bind-count> + <template-used /> + <creation-origin>manual</creation-origin> + <spoke-sdp> + <sdp-bind-id>961:121984</sdp-bind-id> + <oper-state>up</oper-state> + <oper-flags /> + <pw-peer-status-bits /> + <pw-local-status-bits /> + <peer-vccv-cv-bits>lsp-ping bfd-fault-detection</peer-vccv-cv-bits> + <peer-vccv-cc-bits>pwe3-control-word mpls-router-alert-label</peer-vccv-cc-bits> + <oper-control-word>true</oper-control-word> + <pw-fault-ip-address>0.0.0.0</pw-fault-ip-address> + <class-forwarding-oper-state>down</class-forwarding-oper-state> + <creation-origin>manual</creation-origin> + <oper-hash-label>false</oper-hash-label> + <min-required-sdp-oper-mtu>9118</min-required-sdp-oper-mtu> + <ingress> + <oper-label>524278</oper-label> + <statistics> + <forwarded-packets>415370</forwarded-packets> + <forwarded-octets>32220686</forwarded-octets> + <dropped-packets>0</dropped-packets> + <dropped-octets>0</dropped-octets> + </statistics> + </ingress> + <egress> + <oper-label>524263</oper-label> + <statistics> + <forwarded-packets>8579</forwarded-packets> + <forwarded-octets>549518</forwarded-octets> + </statistics> + </egress> + <bfd> + <oper-state>not-configured</oper-state> + <remaining-up-time>0</remaining-up-time> + </bfd> + </spoke-sdp> + <sap> + <sap-id>lag-14:505.cp-400</sap-id> + <oper-state>up</oper-state> + <oper-flags /> + <mirror-state>disabled</mirror-state> + <template-used /> + <oper-dist-cpu-prot-policy>_default-access-policy</oper-dist-cpu-prot-policy> + <ingress> + <qos> + <sap-ingress> + <forwarding-engine> + <statistics> + <dropped-packets>0</dropped-packets> + <dropped-octets>0</dropped-octets> + <received-valid-packets>8579</received-valid-packets> + <received-valid-octets>583834</received-valid-octets> + <high-priority-offered-packets>0</high-priority-offered-packets> + <high-priority-offered-octets>0</high-priority-offered-octets> + <low-priority-offered-packets>8579</low-priority-offered-packets> + <low-priority-offered-octets>583834</low-priority-offered-octets> + <uncolor-offered-packets>0</uncolor-offered-packets> + <uncolor-offered-octets>0</uncolor-offered-octets> + <managed-offered-packets>0</managed-offered-packets> + <managed-offered-octets>0</managed-offered-octets> + <aggregate-offered-packets>8579</aggregate-offered-packets> + <aggregate-offered-octets>583834</aggregate-offered-octets> + <last-cleared-time>2024-11-04T14:48:50.4Z</last-cleared-time> + </statistics> + </forwarding-engine> + <traffic-manager> + <statistics> + <cpm-packets>0</cpm-packets> + <cpm-octets>0</cpm-octets> + <high-priority-dropped-packets>0</high-priority-dropped-packets> + <high-priority-dropped-octets>0</high-priority-dropped-octets> + <low-priority-dropped-packets>0</low-priority-dropped-packets> + <low-priority-dropped-octets>0</low-priority-dropped-octets> + <in-profile-forwarded-packets>0</in-profile-forwarded-packets> + <in-profile-forwarded-octets>0</in-profile-forwarded-octets> + <out-profile-forwarded-packets>8579</out-profile-forwarded-packets> + <out-profile-forwarded-octets>583834</out-profile-forwarded-octets> + <aggregate-forwarded-packets>8579</aggregate-forwarded-packets> + <aggregate-forwarded-octets>583834</aggregate-forwarded-octets> + <aggregate-dropped-packets>0</aggregate-dropped-packets> + <aggregate-dropped-octets>0</aggregate-dropped-octets> + <last-cleared-time>2024-11-04T14:48:50.4Z</last-cleared-time> + </statistics> + </traffic-manager> + <queue> + <queue-id>1</queue-id> + <statistics> + <unicast-priority> + <high-priority-offered-packets>0</high-priority-offered-packets> + <high-priority-offered-octets>0</high-priority-offered-octets> + <low-priority-offered-packets>8579</low-priority-offered-packets> + <low-priority-offered-octets>583834</low-priority-offered-octets> + <high-priority-dropped-packets>0</high-priority-dropped-packets> + <high-priority-dropped-octets>0</high-priority-dropped-octets> + <low-priority-dropped-packets>0</low-priority-dropped-packets> + <low-priority-dropped-octets>0</low-priority-dropped-octets> + <in-profile-forwarded-packets>0</in-profile-forwarded-packets> + <in-profile-forwarded-octets>0</in-profile-forwarded-octets> + <out-profile-forwarded-packets>8579</out-profile-forwarded-packets> + <out-profile-forwarded-octets>583834</out-profile-forwarded-octets> + </unicast-priority> + </statistics> + <hardware-queue> + <source-card>2</source-card> + <source-fp>1</source-fp> + <source-tap-offset>1</source-tap-offset> + <source-port>2/x1/1/c2/1</source-port> + <dest-card>1</dest-card> + <dest-fp>1</dest-fp> + <dest-tap-offset>1</dest-tap-offset> + <adapted-admin-mbs>12615680</adapted-admin-mbs> + <adapted-admin-cbs>0</adapted-admin-cbs> + <operational-mbs>12615680</operational-mbs> + <depth>0</depth> + <operational-cir>0</operational-cir> + <operational-fir>0</operational-fir> + <operational-pir>max</operational-pir> + <exceed-droptail>10076160</exceed-droptail> + <high-droptail>12615680</high-droptail> + <high-plus-droptail>12615680</high-plus-droptail> + <low-droptail>11304960</low-droptail> + <operational-exceed-burst>max</operational-exceed-burst> + <operational-max-transmit-data-size>20480</operational-max-transmit-data-size> + <operational-burst-fir>0</operational-burst-fir> + </hardware-queue> + </queue> + </sap-ingress> + </qos> + </ingress> + <egress> + <qos> + <sap-egress> + <traffic-manager> + <statistics> + <in-inplus-profile-dropped-packets>0</in-inplus-profile-dropped-packets> + <in-inplus-profile-dropped-octets>0</in-inplus-profile-dropped-octets> + <out-exceed-profile-dropped-packets>0</out-exceed-profile-dropped-packets> + <out-exceed-profile-dropped-octets>0</out-exceed-profile-dropped-octets> + <in-inplus-profile-forwarded-packets>0</in-inplus-profile-forwarded-packets> + <in-inplus-profile-forwarded-octets>0</in-inplus-profile-forwarded-octets> + <out-exceed-profile-forwarded-packets>415370</out-exceed-profile-forwarded-packets> + <out-exceed-profile-forwarded-octets>33882166</out-exceed-profile-forwarded-octets> + <aggregate-forwarded-packets>415370</aggregate-forwarded-packets> + <aggregate-forwarded-octets>33882166</aggregate-forwarded-octets> + <aggregate-dropped-packets>0</aggregate-dropped-packets> + <aggregate-dropped-octets>0</aggregate-dropped-octets> + <last-cleared-time>2024-11-04T14:48:50.4Z</last-cleared-time> + </statistics> + </traffic-manager> + <queue> + <queue-id>1</queue-id> + <statistics> + <profile> + <in-inplus-profile-forwarded-packets>0</in-inplus-profile-forwarded-packets> + <in-inplus-profile-forwarded-octets>0</in-inplus-profile-forwarded-octets> + <out-exceed-profile-forwarded-packets>415370</out-exceed-profile-forwarded-packets> + <out-exceed-profile-forwarded-octets>33882166</out-exceed-profile-forwarded-octets> + <in-inplus-profile-dropped-packets>0</in-inplus-profile-dropped-packets> + <in-inplus-profile-dropped-octets>0</in-inplus-profile-dropped-octets> + <out-exceed-profile-dropped-packets>0</out-exceed-profile-dropped-packets> + <out-exceed-profile-dropped-octets>0</out-exceed-profile-dropped-octets> + </profile> + </statistics> + <hardware-queue> + <source-card>2</source-card> + <source-fp>1</source-fp> + <source-port>2/x1/1/c2/1</source-port> + <adapted-admin-mbs>12615680</adapted-admin-mbs> + <exceed-droptail>10076160</exceed-droptail> + <high-droptail>12615680</high-droptail> + <high-plus-droptail>12615680</high-plus-droptail> + <low-droptail>11304960</low-droptail> + <operational-cbs>0</operational-cbs> + <operational-cir>0</operational-cir> + <operational-mbs>12615680</operational-mbs> + <operational-pir>max</operational-pir> + <depth>0</depth> + <operational-exceed-burst>max</operational-exceed-burst> + <operational-max-transmit-data-size>20480</operational-max-transmit-data-size> + <operational-burst-fir>0</operational-burst-fir> + <exceed-slope> + <current-probability>0</current-probability> + </exceed-slope> + <high-slope> + <current-probability>0</current-probability> + </high-slope> + <high-plus-slope> + <current-probability>0</current-probability> + </high-plus-slope> + <low-slope> + <current-probability>0</current-probability> + </low-slope> + </hardware-queue> + </queue> + </sap-egress> + </qos> + </egress> + <lag> + <active-port /> + <per-link-hash-oper> + <class>1</class> + <weight>1</weight> + <is-overriden>false</is-overriden> + </per-link-hash-oper> + </lag> + <ethernet> + <llf> + <oper-state>clear</oper-state> + </llf> + </ethernet> + </sap> + </epipe> + </service> + </state> +</data> \ No newline at end of file diff --git a/test/test_nokia.py b/test/test_nokia.py index e95b5dc5927cd8fb9bcf4ed9f7c4c7ac7dcc6062..b161c896524199e1ceaa9e77ff70e0f35ccdf991 100644 --- a/test/test_nokia.py +++ b/test/test_nokia.py @@ -187,6 +187,12 @@ def test_get_interface_state(load_nokia_state_doc): } == expected_up_interfaces +def test_get_epipe_state(load_nokia_state_doc): + state_doc = load_nokia_state_doc("rt0.ath.gr.lab.office.geant.net") + found_epipes = {(x["name"], x["oper-state"]) for x in nokia.get_epipes_state(state_doc)} + assert found_epipes == {("lag-14:505.cp-400", "up")} + + def test_snmp_index(state_doc): interfaces = nokia.get_interfaces_state(state_doc) expected = {