From: Ondrej Lichtner <olichtne(a)redhat.com>
This commit adds functionality to the slave. Now when checking the
Managed property of a device if the device doesn't exist yet, we check
the slave devices first and if they are all not managed we declare that
the master device is also not managed. The same goes for all slaves
being managed.
This gives us a bit more flexibility when trying to mix NM configuration
with the traditional one.
Signed-off-by: Ondrej Lichtner <olichtne(a)redhat.com>
---
lnst/Slave/NmConfigDevice.py | 39 +++++++++++++++++++++++++++++++--------
1 file changed, 31 insertions(+), 8 deletions(-)
diff --git a/lnst/Slave/NmConfigDevice.py b/lnst/Slave/NmConfigDevice.py
index c743ce8..7a236f9 100644
--- a/lnst/Slave/NmConfigDevice.py
+++ b/lnst/Slave/NmConfigDevice.py
@@ -54,6 +54,12 @@ def is_nm_managed_by_name(dev_name):
dev_props = dbus.Interface(dev, "org.freedesktop.DBus.Properties")
return dev_props.Get(IF_PRE + ".Device", "Managed")
+def _dev_exists(hwaddr):
+ devnames = scan_netdevs()
+ for dev in devnames:
+ if dev["hwaddr"] == hwaddr:
+ return True
+
class NmConfigDeviceGeneric(object):
'''
Generic class for device manipulation all type classes should
@@ -234,11 +240,10 @@ class NmConfigDeviceEth(NmConfigDeviceGeneric):
@classmethod
def is_nm_managed(cls, netdev, config):
managed = super(NmConfigDeviceEth, cls).is_nm_managed(netdev, config)
- devnames = scan_netdevs()
- for dev in devnames:
- if dev["hwaddr"] == netdev["hwaddr"]:
- return managed
- return False
+ if _dev_exists(netdev["hwaddr"]):
+ return managed
+ else:
+ return False
def up(self):
netdev = self._netdev
@@ -302,7 +307,13 @@ class NmConfigDeviceBond(NmConfigDeviceGeneric):
@classmethod
def is_nm_managed(cls, netdev, config):
- managed = super(NmConfigDeviceBond, cls).is_nm_managed(netdev, config)
+ if _dev_exists(netdev["hwaddr"]):
+ managed = super(NmConfigDeviceBond, cls).is_nm_managed(netdev,
+ config)
+ else:
+ slave_id = get_slaves(netdev)[1]
+ netdev = config[slave_id]
+ managed = is_nm_managed(netdev, config)
for slave in get_slaves(netdev):
netdev = config[slave]
@@ -429,7 +440,13 @@ class NmConfigDeviceBridge(NmConfigDeviceGeneric):
@classmethod
def is_nm_managed(cls, netdev, config):
- managed = super(NmConfigDeviceBridge, cls).is_nm_managed(netdev, config)
+ if _dev_exists(netdev["hwaddr"]):
+ managed = super(NmConfigDeviceBond, cls).is_nm_managed(netdev,
+ config)
+ else:
+ slave_id = get_slaves(netdev)[1]
+ netdev = config[slave_id]
+ managed = is_nm_managed(netdev, config)
for slave in get_slaves(netdev):
netdev = config[slave]
@@ -560,7 +577,13 @@ class NmConfigDeviceVlan(NmConfigDeviceGeneric):
@classmethod
def is_nm_managed(cls, netdev, config):
- managed = super(NmConfigDeviceVlan, cls).is_nm_managed(netdev, config)
+ if _dev_exists(netdev["hwaddr"]):
+ managed = super(NmConfigDeviceBond, cls).is_nm_managed(netdev,
+ config)
+ else:
+ slave_id = get_slaves(netdev)[1]
+ netdev = config[slave_id]
+ managed = is_nm_managed(netdev, config)
for slave in get_slaves(netdev):
slave_netdev = config[slave]
--
1.8.3.1
Show replies by thread