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 {}  | 
