summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-09-24 19:03:57 +0200
committerChristian Poessinger <christian@poessinger.com>2019-09-24 21:53:25 +0200
commit065adc3ab2ee6262b4a1a85762697ac81fc5b084 (patch)
tree0e23be39c2c7225063c74c2203b2ddd4c383e5e3
parent09f4553ffdbf3c35696f08118d75793db33cb59b (diff)
downloadvyos-1x-065adc3ab2ee6262b4a1a85762697ac81fc5b084.tar.gz
vyos-1x-065adc3ab2ee6262b4a1a85762697ac81fc5b084.zip
Python/ifconfig: T1557: refactor Interface 'state' property to set_state()/get_state()
-rw-r--r--python/vyos/ifconfig.py25
-rwxr-xr-xsrc/conf_mode/interface-bonding.py8
-rwxr-xr-xsrc/conf_mode/interface-bridge.py4
-rwxr-xr-xsrc/conf_mode/interface-dummy.py6
-rwxr-xr-xsrc/conf_mode/interface-ethernet.py8
-rwxr-xr-xsrc/conf_mode/interface-vxlan.py2
-rwxr-xr-xsrc/conf_mode/interface-wireguard.py6
7 files changed, 27 insertions, 32 deletions
diff --git a/python/vyos/ifconfig.py b/python/vyos/ifconfig.py
index 5fa9f4f2b..d10015e2d 100644
--- a/python/vyos/ifconfig.py
+++ b/python/vyos/ifconfig.py
@@ -60,7 +60,6 @@ class Interface:
>>> i = Interface('eth0')
"""
self._ifname = str(ifname)
- self._state = 'down'
if not os.path.exists('/sys/class/net/{}'.format(ifname)) and not type:
raise Exception('interface "{}" not found'.format(self._ifname))
@@ -266,35 +265,31 @@ class Interface:
self._write_sysfs('/sys/class/net/{}/ifalias'
.format(self._ifname), ifalias)
- @property
- def state(self):
+ def get_state(self):
"""
Enable (up) / Disable (down) an interface
Example:
>>> from vyos.ifconfig import Interface
- >>> Interface('eth0').state
+ >>> Interface('eth0').get_state()
'up'
"""
return self._read_sysfs('/sys/class/net/{}/operstate'
.format(self._ifname))
- @state.setter
- def state(self, state):
+ def set_state(self, state):
"""
Enable (up) / Disable (down) an interface
Example:
>>> from vyos.ifconfig import Interface
- >>> Interface('eth0').state = 'down'
- >>> Interface('eth0').state
+ >>> Interface('eth0').set_state('down')
+ >>> Interface('eth0').get_state()
'down'
"""
if state not in ['up', 'down']:
raise ValueError('state must be "up" or "down"')
- self._state = state
-
# Assemble command executed on system. Unfortunately there is no way
# to up/down an interface via sysfs
cmd = 'ip link set dev {} {}'.format(self._ifname, state)
@@ -468,7 +463,7 @@ class Interface:
with open(self._dhcp_cfg_file, 'w') as f:
f.write(dhcp_text)
- if self._state == 'up':
+ if self.get_state() == 'up':
cmd = 'start-stop-daemon --start --quiet --pidfile ' + \
self._dhcp_pid_file
cmd += ' --exec /sbin/dhclient --'
@@ -546,7 +541,7 @@ class Interface:
with open(self._dhcpv6_cfg_file, 'w') as f:
f.write(dhcpv6_text)
- if self._state == 'up':
+ if self.get_state() == 'up':
# https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1447715
#
# wee need to wait for IPv6 DAD to finish once and interface is added
@@ -1115,7 +1110,7 @@ class BondIf(VLANIf):
for s in self.get_slaves():
slave = {
'ifname' : s,
- 'state': Interface(s).state
+ 'state': Interface(s).get_state()
}
slave_list.append(slave)
@@ -1126,7 +1121,7 @@ class BondIf(VLANIf):
# physical interface
for slave in slave_list:
i = Interface(slave['ifname'])
- i.state = slave['state']
+ i.set_state(slave['state'])
@property
def xmit_hash_policy(self):
@@ -1301,7 +1296,7 @@ class BondIf(VLANIf):
# An interface can only be added to a bond if it is in 'down' state. If
# interface is in 'up' state, the following Kernel error will be thrown:
# bond0: eth1 is up - this may be due to an out of date ifenslave.
- Interface(interface).state = 'down'
+ Interface(interface).set_state('down')
return self._write_sysfs('/sys/class/net/{}/bonding/slaves'
.format(self._ifname), '+' + interface)
diff --git a/src/conf_mode/interface-bonding.py b/src/conf_mode/interface-bonding.py
index 0fd19ce1e..c7adb0f9a 100755
--- a/src/conf_mode/interface-bonding.py
+++ b/src/conf_mode/interface-bonding.py
@@ -95,9 +95,9 @@ def apply_vlan_config(vlan, config):
# enable/disable VLAN interface
if config['disable']:
- vlan.state = 'down'
+ vlan.set_state('down')
else:
- vlan.state = 'up'
+ vlan.set_state('up')
# Configure interface address(es)
# - not longer required addresses get removed first
@@ -337,7 +337,7 @@ def apply(bond):
else:
# Some parameters can not be changed when the bond is up.
# Always disable the bond prior changing anything
- b.state = 'down'
+ b.set_state('down')
# The bonding mode can not be changed when there are interfaces enslaved
# to this bond, thus we will free all interfaces from the bond first!
@@ -407,7 +407,7 @@ def apply(bond):
# parameters we will only re-enable the interface if it is not
# administratively disabled
if not bond['disable']:
- b.state = 'up'
+ b.set_state('up')
# Configure interface address(es)
# - not longer required addresses get removed first
diff --git a/src/conf_mode/interface-bridge.py b/src/conf_mode/interface-bridge.py
index cb053773a..b20e7f6ff 100755
--- a/src/conf_mode/interface-bridge.py
+++ b/src/conf_mode/interface-bridge.py
@@ -185,7 +185,7 @@ def apply(bridge):
br.remove()
else:
# enable interface
- br.state = 'up'
+ br.set_state('up')
# set ageing time
br.set_ageing_time(bridge['aging'])
# set bridge forward delay
@@ -217,7 +217,7 @@ def apply(bridge):
# up/down interface
if bridge['disable']:
- br.state = 'down'
+ br.set_state('down')
# Configure interface address(es)
# - not longer required addresses get removed first
diff --git a/src/conf_mode/interface-dummy.py b/src/conf_mode/interface-dummy.py
index 2556722fa..16b716e61 100755
--- a/src/conf_mode/interface-dummy.py
+++ b/src/conf_mode/interface-dummy.py
@@ -84,8 +84,6 @@ def apply(dummy):
if dummy['deleted']:
d.remove()
else:
- # enable interface
- d.state = 'up'
# update interface description used e.g. within SNMP
d.set_alias(dummy['description'])
@@ -99,7 +97,9 @@ def apply(dummy):
# disable interface on demand
if dummy['disable']:
- d.state = 'down'
+ d.set_state('down')
+ else
+ d.set_state('up')
return None
diff --git a/src/conf_mode/interface-ethernet.py b/src/conf_mode/interface-ethernet.py
index cc9f44753..99450b19e 100755
--- a/src/conf_mode/interface-ethernet.py
+++ b/src/conf_mode/interface-ethernet.py
@@ -78,9 +78,9 @@ def apply_vlan_config(vlan, config):
# enable/disable VLAN interface
if config['disable']:
- vlan.state = 'down'
+ vlan.set_state('down')
else:
- vlan.state = 'up'
+ vlan.set_state('up')
# Configure interface address(es)
# - not longer required addresses get removed first
@@ -318,9 +318,9 @@ def apply(eth):
# Enable/Disable interface
if eth['disable']:
- e.state = 'down'
+ e.set_state('down')
else:
- e.state = 'up'
+ e.set_state('up')
# Configure interface address(es)
# - not longer required addresses get removed first
diff --git a/src/conf_mode/interface-vxlan.py b/src/conf_mode/interface-vxlan.py
index c0c85e64c..1097ae4d0 100755
--- a/src/conf_mode/interface-vxlan.py
+++ b/src/conf_mode/interface-vxlan.py
@@ -182,7 +182,7 @@ def apply(vxlan):
# parameters we will only re-enable the interface if it is not
# administratively disabled
if not vxlan['disable']:
- v.state='up'
+ v.set_state('up')
return None
diff --git a/src/conf_mode/interface-wireguard.py b/src/conf_mode/interface-wireguard.py
index 7254e153f..3fd29ad4d 100755
--- a/src/conf_mode/interface-wireguard.py
+++ b/src/conf_mode/interface-wireguard.py
@@ -173,11 +173,11 @@ def apply(c):
# interface state
if c[ifname]['state'] == 'disable':
sl.syslog(sl.LOG_NOTICE, "disable interface " + ifname)
- intfc.state = 'down'
+ intfc.set_state('down')
else:
- if not intfc.state == 'up':
+ if not intfc.get_state() == 'up':
sl.syslog(sl.LOG_NOTICE, "enable interface " + ifname)
- intfc.state = 'up'
+ intfc.set_state('up')
# IP address
if not c_eff.exists_effective(ifname + ' address'):