diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/vyos/util.py | 16 | ||||
-rw-r--r-- | python/vyos/utils/network.py | 8 | ||||
-rw-r--r-- | python/vyos/xml_ref/definition.py | 7 |
3 files changed, 15 insertions, 16 deletions
diff --git a/python/vyos/util.py b/python/vyos/util.py index 33da5da40..ed651fdc3 100644 --- a/python/vyos/util.py +++ b/python/vyos/util.py @@ -913,7 +913,7 @@ def get_interface_config(interface): if not os.path.exists(f'/sys/class/net/{interface}'): return None from json import loads - tmp = loads(cmd(f'ip -d -j link show {interface}'))[0] + tmp = loads(cmd(f'ip --detail --json link show dev {interface}'))[0] return tmp def get_interface_address(interface): @@ -923,7 +923,7 @@ def get_interface_address(interface): if not os.path.exists(f'/sys/class/net/{interface}'): return None from json import loads - tmp = loads(cmd(f'ip -d -j addr show {interface}'))[0] + tmp = loads(cmd(f'ip --detail --json addr show dev {interface}'))[0] return tmp def get_interface_namespace(iface): @@ -937,17 +937,17 @@ def get_interface_namespace(iface): return None for ns in tmp: - namespace = f'{ns["name"]}' + netns = f'{ns["name"]}' # Search interface in each netns - data = loads(cmd(f'ip netns exec {namespace} ip -j link show')) - for compare in data: - if iface == compare["ifname"]: - return namespace + data = loads(cmd(f'ip netns exec {netns} ip --json link show')) + for tmp in data: + if iface == tmp["ifname"]: + return netns def get_all_vrfs(): """ Return a dictionary of all system wide known VRF instances """ from json import loads - tmp = loads(cmd('ip -j vrf list')) + tmp = loads(cmd('ip --json vrf list')) # Result is of type [{"name":"red","table":1000},{"name":"blue","table":2000}] # so we will re-arrange it to a more nicer representation: # {'red': {'table': 1000}, 'blue': {'table': 2000}} diff --git a/python/vyos/utils/network.py b/python/vyos/utils/network.py index 72b7ca6da..7386d44f0 100644 --- a/python/vyos/utils/network.py +++ b/python/vyos/utils/network.py @@ -15,7 +15,6 @@ import os - def get_protocol_by_name(protocol_name): """Get protocol number by protocol name @@ -28,3 +27,10 @@ def get_protocol_by_name(protocol_name): return protocol_number except socket.error: return protocol_name + +def interface_exists_in_netns(interface_name, netns): + from vyos.util import rc_cmd + rc, out = rc_cmd(f'ip netns exec {netns} ip link show dev {interface_name}') + if rc == 0: + return True + return False diff --git a/python/vyos/xml_ref/definition.py b/python/vyos/xml_ref/definition.py index 33a49ca69..7634773d6 100644 --- a/python/vyos/xml_ref/definition.py +++ b/python/vyos/xml_ref/definition.py @@ -123,9 +123,6 @@ class Xml: return d def multi_to_list(self, rpath: list, conf: dict) -> dict: - if rpath and rpath[-1] in list(conf): - raise ValueError('rpath should be disjoint from conf keys') - res: Any = {} for k in list(conf): @@ -246,10 +243,6 @@ class Xml: if not conf: return self.get_defaults(path, get_first_key=get_first_key, recursive=recursive) - if path and path[-1] in list(conf): - conf = conf[path[-1]] - conf = {} if not isinstance(conf, dict) else conf - if not self._well_defined(path, conf): print('path to config dict does not define full config paths') return {} |