Change in vdsm[master]: Cleanup the usages of configWriter in configNetwork

wudxw at linux.vnet.ibm.com wudxw at linux.vnet.ibm.com
Tue Jul 2 15:52:22 UTC 2013


Mark Wu has uploaded a new change for review.

Change subject: Cleanup the usages of configWriter in configNetwork
......................................................................

Cleanup the usages of configWriter in configNetwork

We should keep the interaction with configWriter inside configurator.
So this patch changes to construct new configWriter instantance in
ifcfg's __init__() and use configurator to implement the transaction
management of configuration.

Signed-off-by: Mark Wu <wudxw at linux.vnet.ibm.com>
Change-Id: I19310221ec2c5d7c621c121b77ed87d060676d42
---
M vdsm/configNetwork.py
M vdsm/netconf/ifcfg.py
2 files changed, 21 insertions(+), 31 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/43/16343/1

diff --git a/vdsm/configNetwork.py b/vdsm/configNetwork.py
index 6f82f08..5d39ece 100755
--- a/vdsm/configNetwork.py
+++ b/vdsm/configNetwork.py
@@ -149,7 +149,7 @@
 
 def addNetwork(network, vlan=None, bonding=None, nics=None, ipaddr=None,
                netmask=None, prefix=None, mtu=None, gateway=None, force=False,
-               configWriter=None, bondingOptions=None, bridged=True,
+               configurator=None, bondingOptions=None, bridged=True,
                _netinfo=None, **options):
     nics = nics or ()
     if _netinfo is None:
@@ -187,9 +187,8 @@
                  network, vlan, bonding, nics, bondingOptions,
                  mtu, bridged, options)
 
-    if configWriter is None:
-        configWriter = ConfigWriter()
-    configurator = Ifcfg(configWriter)
+    if configurator is None:
+        configurator = Ifcfg()
 
     bootproto = options.pop('bootproto', None)
 
@@ -252,14 +251,14 @@
     print "Bondings:", _netinfo.bondings.keys()
 
 
-def _delBrokenNetwork(network, netAttr, configWriter):
+def _delBrokenNetwork(network, netAttr, configurator):
     '''Adapts the network information of broken networks so that they can be
     deleted via delNetwork.'''
     _netinfo = netinfo.NetInfo()
     _netinfo.networks[network] = netAttr
     if _netinfo.networks[network]['bridged']:
         _netinfo.networks[network]['ports'] = ConfigWriter.ifcfgPorts(network)
-    delNetwork(network, configWriter=configWriter, force=True,
+    delNetwork(network, configurator=configurator, force=True,
                implicitBonding=False, _netinfo=_netinfo)
 
 
@@ -287,14 +286,13 @@
 
 
 def delNetwork(network, vlan=None, bonding=None, nics=None, force=False,
-               configWriter=None, implicitBonding=True, _netinfo=None,
+               configurator=None, implicitBonding=True, _netinfo=None,
                **options):
     if _netinfo is None:
         _netinfo = netinfo.NetInfo()
 
-    if configWriter is None:
-        configWriter = ConfigWriter()
-    configurator = Ifcfg(configWriter)
+    if configurator is None:
+        configurator = Ifcfg()
 
     if network not in _netinfo.networks:
         logging.info("Network %r: doesn't exist in libvirt database", network)
@@ -340,19 +338,19 @@
 
 def editNetwork(oldBridge, newBridge, vlan=None, bonding=None, nics=None,
                 **options):
-    configWriter = ConfigWriter()
+    configurator = Ifcfg()
     try:
-        delNetwork(oldBridge, configWriter=configWriter, **options)
+        delNetwork(oldBridge, configurator=configurator, **options)
         addNetwork(newBridge, vlan=vlan, bonding=bonding, nics=nics,
-                   configWriter=configWriter, **options)
+                   configurator=configurator, **options)
     except:
-        configWriter.restoreBackups()
+        configurator.rollback()
         raise
     if utils.tobool(options.get('connectivityCheck', False)):
         if not clientSeen(int(options.get('connectivityTimeout',
                                           CONNECTIVITY_TIMEOUT_DEFAULT))):
             delNetwork(newBridge, force=True)
-            configWriter.restoreBackups()
+            configurator.rollback()
             return define.errCode['noConPeer']['status']['code']
 
 
@@ -473,8 +471,7 @@
     """
     logger = logging.getLogger("setupNetworks")
     _netinfo = netinfo.NetInfo()
-    configWriter = ConfigWriter()
-    configurator = Ifcfg(configWriter)
+    configurator = Ifcfg()
     networksAdded = set()
 
     logger.debug("Setting up network according to configuration: "
@@ -493,7 +490,7 @@
         for network, networkAttrs in networks.items():
             if network in _netinfo.networks:
                 logger.debug("Removing network %r" % network)
-                delNetwork(network, configWriter=configWriter, force=force,
+                delNetwork(network, configurator=configurator, force=force,
                            implicitBonding=False)
                 if 'remove' in networkAttrs:
                     del networks[network]
@@ -504,7 +501,7 @@
                 # a broken network.
                 logger.debug('Removing broken network %r' % network)
                 _delBrokenNetwork(network, libvirt_nets[network],
-                                  configWriter=configWriter)
+                                  configurator=configurator)
                 if 'remove' in networkAttrs:
                     del networks[network]
                     del libvirt_nets[network]
@@ -524,7 +521,7 @@
             d['force'] = force
 
             logger.debug("Adding network %r" % network)
-            addNetwork(network, configWriter=configWriter,
+            addNetwork(network, configurator=configurator,
                        implicitBonding=True, **d)
 
         if utils.tobool(options.get('connectivityCheck', True)):
@@ -542,7 +539,7 @@
                 raise ConfigNetworkError(ne.ERR_LOST_CONNECTION,
                                          'connectivity check failed')
     except:
-        configWriter.restoreBackups()
+        configurator.rollback()
         raise
 
 
diff --git a/vdsm/netconf/ifcfg.py b/vdsm/netconf/ifcfg.py
index 4ccc15d..66f816e 100644
--- a/vdsm/netconf/ifcfg.py
+++ b/vdsm/netconf/ifcfg.py
@@ -41,8 +41,8 @@
 
 class Ifcfg(object):
     # TODO: Do all the configWriter interaction from here.
-    def __init__(self, configWriter=None):
-        self.configWriter = configWriter
+    def __init__(self):
+        self.configWriter = ConfigWriter()
         self._libvirtAdded = set()
 
     def begin(self):
@@ -51,14 +51,7 @@
             self._libvirtAdded = set()
 
     def rollback(self):
-        if self.configWriter:
-            self.configWriter.restoreBackups()
-            for network in self._libvirtAdded:
-                # TODO: Add meaningful logging for failure to remove the added
-                # networks.
-                self.configWriter.removeLibvirtNetwork(network)
-
-            self.configWriter = None
+        self.configWriter.restoreBackups()
 
     def commit(self):
         if self.configWriter:


-- 
To view, visit http://gerrit.ovirt.org/16343
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I19310221ec2c5d7c621c121b77ed87d060676d42
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Mark Wu <wudxw at linux.vnet.ibm.com>


More information about the vdsm-patches mailing list