Change in vdsm[master]: netmodels: Improve getIpConfig using namedtuple

wudxw at linux.vnet.ibm.com wudxw at linux.vnet.ibm.com
Thu Aug 15 09:56:23 UTC 2013


Mark Wu has uploaded a new change for review.

Change subject: netmodels: Improve getIpConfig using namedtuple
......................................................................

netmodels: Improve getIpConfig using namedtuple

Change-Id: I53eb3c4b00f33285a1b299ca0adc6611eb99a989
Signed-off-by: Mark Wu <wudxw at linux.vnet.ibm.com>
---
M vdsm/netconf/__init__.py
M vdsm/netconf/ifcfg.py
M vdsm/netmodels.py
M vdsm/sourceRoute.py
4 files changed, 17 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/67/18167/1

diff --git a/vdsm/netconf/__init__.py b/vdsm/netconf/__init__.py
index 97a311b..4936fda 100644
--- a/vdsm/netconf/__init__.py
+++ b/vdsm/netconf/__init__.py
@@ -85,8 +85,7 @@
         DynamicSourceRoute.addInterfaceTracking(netEnt)
 
     def _removeSourceRoute(self, netEnt):
-        _, _, _, bootproto, _, _ = netEnt.getIpConfig()
-        if bootproto != 'dhcp' and netEnt.master is None:
+        if netEnt.ipConfig.bootproto != 'dhcp' and netEnt.master is None:
             logging.debug("Removing source route for device %s" % netEnt.name)
             StaticSourceRoute(netEnt.name, self).remove()
 
diff --git a/vdsm/netconf/ifcfg.py b/vdsm/netconf/ifcfg.py
index b3db008..eb47255 100644
--- a/vdsm/netconf/ifcfg.py
+++ b/vdsm/netconf/ifcfg.py
@@ -60,7 +60,7 @@
             self._libvirtAdded = set()
 
     def configureBridge(self, bridge, **opts):
-        ipaddr, netmask, gateway, bootproto, async, _ = bridge.getIpConfig()
+        ipaddr, netmask, gateway, bootproto, async, _ = bridge.ipConfig
         self.configApplier.addBridge(bridge, **opts)
         ifdown(bridge.name)
         if bridge.port:
@@ -69,14 +69,14 @@
         ifup(bridge.name, async)
 
     def configureVlan(self, vlan, **opts):
-        ipaddr, netmask, gateway, bootproto, async, _ = vlan.getIpConfig()
+        ipaddr, netmask, gateway, bootproto, async, _ = vlan.ipConfig
         self.configApplier.addVlan(vlan, **opts)
         vlan.device.configure(**opts)
         self._addSourceRoute(vlan, ipaddr, netmask, gateway, bootproto)
         ifup(vlan.name, async)
 
     def configureBond(self, bond, **opts):
-        ipaddr, netmask, gateway, bootproto, async, _ = bond.getIpConfig()
+        ipaddr, netmask, gateway, bootproto, async, _ = bond.ipConfig
         self.configApplier.addBonding(bond, **opts)
         if not netinfo.isVlanned(bond.name):
             for slave in bond.slaves:
@@ -96,7 +96,7 @@
         self.configureBond(bond)
 
     def configureNic(self, nic, **opts):
-        ipaddr, netmask, gateway, bootproto, async, _ = nic.getIpConfig()
+        ipaddr, netmask, gateway, bootproto, async, _ = nic.ipConfig
         self.configApplier.addNic(nic, **opts)
         self._addSourceRoute(nic, ipaddr, netmask, gateway, bootproto)
         if nic.bond is None:
@@ -490,7 +490,7 @@
     def addBridge(self, bridge, **opts):
         """ Create ifcfg-* file with proper fields for bridge """
         ipaddr, netmask, gateway, bootproto, _, defaultRoute = \
-            bridge.getIpConfig()
+            bridge.ipConfig
         conf = 'TYPE=Bridge\nDELAY=%s\n' % bridge.forwardDelay
         self._createConfFile(conf, bridge.name, ipaddr, netmask, gateway,
                              bootproto, bridge.mtu,
@@ -499,7 +499,7 @@
     def addVlan(self, vlan, **opts):
         """ Create ifcfg-* file with proper fields for VLAN """
         ipaddr, netmask, gateway, bootproto, _, defaultRoute = \
-            vlan.getIpConfig()
+            vlan.ipConfig
         conf = 'VLAN=yes\n'
         if vlan.bridge:
             conf += 'BRIDGE=%s\n' % pipes.quote(vlan.bridge.name)
@@ -543,7 +543,7 @@
     @staticmethod
     def _getIfaceConfValues(iface, _netinfo):
         ipaddr, netmask, gateway, bootproto, _, defaultRoute = \
-            iface.getIpConfig()
+            iface.ipConfig
         defaultRoute = ConfigWriter._toIfcfgFormat(defaultRoute)
         mtu = iface.mtu
         if _netinfo.ifaceUsers(iface.name):
diff --git a/vdsm/netmodels.py b/vdsm/netmodels.py
index fffba2a..95e87f1 100644
--- a/vdsm/netmodels.py
+++ b/vdsm/netmodels.py
@@ -16,6 +16,7 @@
 #
 # Refer to the README and COPYING files for full details of the license
 #
+from collections import namedtuple
 from contextlib import contextmanager
 import logging
 import os
@@ -29,6 +30,9 @@
 
 
 class NetDevice(object):
+    _ipConfig = namedtuple('ipConfig', 'ipaddr netmask gateway bootproto \
+                                        async defaultRoute')
+
     def __init__(self, name, configurator, ipconfig=None, mtu=None):
         self.name = name
         self.ip = ipconfig
@@ -42,14 +46,16 @@
     def configure(self, **opts):
         raise NotImplementedError
 
-    def getIpConfig(self):
+    @property
+    def ipConfig(self):
         try:
             ipaddr, netmask, gateway, bootproto, async, defaultRoute = \
                 self.ip.getConfig()
         except AttributeError:
             ipaddr = netmask = gateway = bootproto = async = defaultRoute = \
                 None
-        return ipaddr, netmask, gateway, bootproto, async, defaultRoute
+        return self._ipConfig(ipaddr, netmask, gateway, bootproto, async,
+                              defaultRoute)
 
     @property
     def bridge(self):
diff --git a/vdsm/sourceRoute.py b/vdsm/sourceRoute.py
index c05d066..73fe075 100644
--- a/vdsm/sourceRoute.py
+++ b/vdsm/sourceRoute.py
@@ -101,8 +101,7 @@
 
     @staticmethod
     def addInterfaceTracking(device):
-        _, _, _, bootproto, _, _ = device.getIpConfig()
-        if bootproto == 'dhcp':
+        if device.ipConfig.bootproto == 'dhcp':
             open(DynamicSourceRoute.getTrackingFilePath(device.name), 'a').\
                 close()
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I53eb3c4b00f33285a1b299ca0adc6611eb99a989
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