diff options
author | Thomas Mangin <thomas.mangin@exa.net.uk> | 2020-03-31 16:59:33 +0100 |
---|---|---|
committer | Thomas Mangin <thomas.mangin@exa.net.uk> | 2020-03-31 16:59:55 +0100 |
commit | 05e79a4bb2137ee3ea563ced7f64b033c41eb438 (patch) | |
tree | 4569cd88efc01a1473e90dfd90b271ac54e9f711 | |
parent | 458ccfc2f0fe46d399d2412af60d8ade26b57f65 (diff) | |
download | vyos-1x-05e79a4bb2137ee3ea563ced7f64b033c41eb438.tar.gz vyos-1x-05e79a4bb2137ee3ea563ced7f64b033c41eb438.zip |
ifconfig: T2057: allow to disable interface debugging
In order to be able to use the interface class
with operational mode, these commands must not log as
it would otherwise mess with the output on the screen.
-rw-r--r-- | python/vyos/ifconfig/control.py | 12 | ||||
-rw-r--r-- | python/vyos/ifconfig/dhcp.py | 4 | ||||
-rw-r--r-- | python/vyos/ifconfig/interface.py | 10 |
3 files changed, 20 insertions, 6 deletions
diff --git a/python/vyos/ifconfig/control.py b/python/vyos/ifconfig/control.py index 1c9f7e284..c1a073aef 100644 --- a/python/vyos/ifconfig/control.py +++ b/python/vyos/ifconfig/control.py @@ -24,8 +24,18 @@ class Control(Register): _command_get = {} _command_set = {} + def __init__(self, **kargs): + # some commands (such as operation comands - show interfaces, etc.) + # need to query the interface statistics. If the interface + # code is used and the debugging is enabled, the screen output + # will include both the command but also the debugging for that command + # to prevent this, debugging can be explicitely disabled + + # if debug is not explicitely disabled the the config, enable it + self.debug = kargs.get('debug', True) + def _debug_msg(self, msg): - if os.path.isfile('/tmp/vyos.ifconfig.debug'): + if os.path.isfile('/tmp/vyos.ifconfig.debug') and self.debug: print('DEBUG/{:<6} {}'.format(self.config['ifname'], msg)) def _popen(self, command): diff --git a/python/vyos/ifconfig/dhcp.py b/python/vyos/ifconfig/dhcp.py index 8d3653433..8ec8263b5 100644 --- a/python/vyos/ifconfig/dhcp.py +++ b/python/vyos/ifconfig/dhcp.py @@ -50,7 +50,9 @@ interface "{{ intf }}" { class DHCP (Control): client_base = r'/var/lib/dhcp/dhclient_' - def __init__ (self, ifname): + def __init__ (self, ifname, **kargs): + super().__init__(**kargs) + # per interface DHCP config files self._dhcp = { 4: { diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py index 8b41d6158..4a34f96d6 100644 --- a/python/vyos/ifconfig/interface.py +++ b/python/vyos/ifconfig/interface.py @@ -162,15 +162,17 @@ class Interface(DHCP): >>> i = Interface('eth0') """ - DHCP.__init__(self, ifname) - self.config = deepcopy(self.default) - self.config['ifname'] = ifname - for k in self.options: if k in kargs: self.config[k] = kargs[k] + # make sure the ifname is the first argument and not from the dict + self.config['ifname'] = ifname + + # we must have updated config before initialising the Interface + super().__init__(ifname, **kargs) + if not os.path.exists('/sys/class/net/{}'.format(self.config['ifname'])): if not self.config['type']: raise Exception('interface "{}" not found'.format(self.config['ifname'])) |