Change in vdsm[master]: network: api: raise error on removal of assigned bond

phoracek at redhat.com phoracek at redhat.com
Mon Mar 9 08:40:02 UTC 2015


Petr Horáček has uploaded a new change for review.

Change subject: network: api: raise error on removal of assigned bond
......................................................................

network: api: raise error on removal of assigned bond

When we try to remove assigned bond via setupNetworks, we get SUCCESS,
but bond is not removed (we don't allow removal of assigned device).

Now we raise an ERROR when someone tries to remove assigned bond.

Change-Id: Idb650a60e72358cc2924e378628a8c9637cabc33
Signed-off-by: Petr Horáček <phoracek at redhat.com>
---
M tests/functional/networkTests.py
M vdsm/network/api.py
M vdsm/network/errors.py
3 files changed, 22 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/70/38470/1

diff --git a/tests/functional/networkTests.py b/tests/functional/networkTests.py
index 07f5e86..add01d1 100644
--- a/tests/functional/networkTests.py
+++ b/tests/functional/networkTests.py
@@ -2341,3 +2341,20 @@
             self.assertNetworkDoesntExist(NETWORK_NAME)
             self.assertBondDoesntExist(BONDING_NAME, [nic])
             self.vdsm_net.save_config()
+
+    @cleanupNet
+    def test_setupNetworks_remove_bond_under_network(self):
+        with dummyIf(1) as nics:
+            status, msg = self.vdsm_net.setupNetworks(
+                {NETWORK_NAME:
+                    {'bonding': BONDING_NAME, 'bridged': False}},
+                {BONDING_NAME: {'nics': nics}}, NOCHK)
+            self.assertEqual(status, SUCCESS, msg)
+            self.assertNetworkExists(NETWORK_NAME)
+            self.assertBondExists(BONDING_NAME, nics)
+
+            status, msg = self.vdsm_net.setupNetworks(
+                {}, {BONDING_NAME: {'remove': True}}, NOCHK)
+            self.assertEqual(status, SUCCESS, msg)
+            self.assertNetworkExists(NETWORK_NAME)
+            self.assertBondDoesntExist(BONDING_NAME, nics)
diff --git a/vdsm/network/api.py b/vdsm/network/api.py
index 6095ed0..9e1233d 100755
--- a/vdsm/network/api.py
+++ b/vdsm/network/api.py
@@ -592,6 +592,10 @@
                     raise ConfigNetworkError(
                         ne.ERR_BAD_BONDING,
                         "Cannot remove bonding %s: does not exist" % name)
+            if netinfo.ifaceUsed(name):
+                raise ConfigNetworkError(ne.ERR_USED_BOND,
+                    "Cannot remove bonding %s: used by another interface" %
+                    name)
             bond = Bond.objectivize(name, configurator, attrs.get('options'),
                                     attrs.get('nics'), mtu=None,
                                     _netinfo=_netinfo,
diff --git a/vdsm/network/errors.py b/vdsm/network/errors.py
index cde0adb..cd111ab 100644
--- a/vdsm/network/errors.py
+++ b/vdsm/network/errors.py
@@ -29,6 +29,7 @@
 ERR_USED_BRIDGE = 28
 ERR_FAILED_IFUP = 29
 ERR_FAILED_IFDOWN = 30
+ERR_USED_BOND = 31
 ERR_LOST_CONNECTION = 10    # noConPeer
 
 


-- 
To view, visit https://gerrit.ovirt.org/38470
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idb650a60e72358cc2924e378628a8c9637cabc33
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Petr Horáček <phoracek at redhat.com>


More information about the vdsm-patches mailing list