summaryrefslogtreecommitdiff
path: root/python/vyos
diff options
context:
space:
mode:
Diffstat (limited to 'python/vyos')
-rw-r--r--python/vyos/config_mgmt.py27
-rw-r--r--python/vyos/util.py16
-rw-r--r--python/vyos/utils/network.py8
-rw-r--r--python/vyos/xml_ref/definition.py7
4 files changed, 29 insertions, 29 deletions
diff --git a/python/vyos/config_mgmt.py b/python/vyos/config_mgmt.py
index 26114149f..e1870aa0a 100644
--- a/python/vyos/config_mgmt.py
+++ b/python/vyos/config_mgmt.py
@@ -21,6 +21,8 @@ import logging
from typing import Optional, Tuple, Union
from filecmp import cmp
from datetime import datetime
+from textwrap import dedent
+from pathlib import Path
from tabulate import tabulate
from vyos.config import Config
@@ -456,19 +458,18 @@ Proceed ?'''
return ConfigTree(c)
def _add_logrotate_conf(self):
- conf = f"""{archive_config_file} {{
- su root vyattacfg
- rotate {self.max_revisions}
- start 0
- compress
- copy
-}}"""
- mask = os.umask(0o133)
-
- with open(logrotate_conf, 'w') as f:
- f.write(conf)
-
- os.umask(mask)
+ conf: str = dedent(f"""\
+ {archive_config_file} {{
+ su root vyattacfg
+ rotate {self.max_revisions}
+ start 0
+ compress
+ copy
+ }}
+ """)
+ conf_file = Path(logrotate_conf)
+ conf_file.write_text(conf)
+ conf_file.chmod(0o644)
def _archive_active_config(self) -> bool:
mask = os.umask(0o113)
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 2ff53ee46..43101bb4e 100644
--- a/python/vyos/xml_ref/definition.py
+++ b/python/vyos/xml_ref/definition.py
@@ -128,9 +128,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):
@@ -274,10 +271,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 {}