From 116fc6b5ce97851036dd82c3688d75c87c1e6658 Mon Sep 17 00:00:00 2001 From: wdesmedt Date: Wed, 24 Jan 2024 18:16:37 +0000 Subject: [PATCH] add network-instance to 'arp' report --- nornir_srl/connections/srlinux.py | 12 +++++++++++- pyproject.toml | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/nornir_srl/connections/srlinux.py b/nornir_srl/connections/srlinux.py index 4859c44..ad171f3 100644 --- a/nornir_srl/connections/srlinux.py +++ b/nornir_srl/connections/srlinux.py @@ -672,15 +672,25 @@ def set_es_peers(resp): def get_arp(self) -> Dict[str, Any]: path_spec = { "path": f"/interface[name=*]/subinterface[index=*]/ipv4/arp/neighbor", - "jmespath": '"interface"[*].subinterface[].{interface:"_subitf", entries:ipv4.arp.neighbor[].{IPv4:"ipv4-address",MAC:"link-layer-address",Type:origin,expiry:"_rel_expiry" }}', + "jmespath": '"interface"[*].subinterface[].{interface:"_subitf", NI:"_ni"|to_string(@), entries:ipv4.arp.neighbor[].{IPv4:"ipv4-address",MAC:"link-layer-address",Type:origin,expiry:"_rel_expiry" }}', "datatype": "state", } + ni_itfs = self.get(paths=["/network-instance[name=*]"], datatype="config") + ni_itf_map: Dict[str, List[str]] = {} + for ni in ni_itfs[0].get("network-instance", []): +# if ni.get("type", "") == "mac-vrf": +# continue + for ni_itf in ni.get("interface", []): + if ni_itf["name"] not in ni_itf_map: + ni_itf_map[ni_itf["name"]] = [] + ni_itf_map[ni_itf["name"]].append(ni["name"]) resp = self.get( paths=[path_spec.get("path", "")], datatype=path_spec["datatype"] ) for itf in resp[0].get("interface", []): for subitf in itf.get("subinterface", []): subitf["_subitf"] = f"{itf['name']}.{subitf['index']}" + subitf["_ni"] = ni_itf_map.get(subitf["_subitf"], []) for arp_entry in ( subitf.get("ipv4", {}).get("arp", {}).get("neighbor", []) ): diff --git a/pyproject.toml b/pyproject.toml index 78f47c4..820cd6e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "nornir-srl" -version = "0.2.6" +version = "0.2.7" description = "Nornir connection plugin for SRLinux" authors = ["Walter De Smedt "] readme = "README.md"