[vdsm/f17] update to vdsm-4.10.0-4

Federico Simoncelli fsimonce at fedoraproject.org
Thu Jun 28 22:46:37 UTC 2012


commit 2728a144b912cf205e4ad9b5dcc9811b53b9191c
Author: Federico Simoncelli <fsimonce at redhat.com>
Date:   Fri Jun 29 00:38:00 2012 +0200

    update to vdsm-4.10.0-4
    
    - deployUtil: use os.uname instead of /bin/uname
    - deployUtil: slightly saner kernel version comparison
    - BZ#835784 - Allow to create a network on top of existing bond in
      additional to create a new bond and network
    - BZ#833119 - Allow to create VLANed network on top of existing bond
    - BZ#833803 - Avoid bond breaking after network detach
    - Handle bond properly if connectivity check fail.
    - BZ#806555 having /etc/ovirt-node-* means it is a node
    
    Signed-off-by: Federico Simoncelli <fsimonce at redhat.com>

 ...loyUtil-use-os.uname-instead-of-bin-uname.patch |   63 ++++++++++
 ...-slightly-saner-kernel-version-comparison.patch |  125 ++++++++++++++++++++
 ...llow-to-create-a-network-on-top-of-existi.patch |   39 ++++++
 ...llow-to-create-VLANed-network-on-top-of-e.patch |   77 ++++++++++++
 ...-Avoid-bond-breaking-after-network-detach.patch |   72 +++++++++++
 ...-bond-properly-if-connectivity-check-fail.patch |   70 +++++++++++
 ...-having-etc-ovirt-node-means-it-is-a-node.patch |   38 ++++++
 vdsm.spec                                          |   26 ++++-
 8 files changed, 509 insertions(+), 1 deletions(-)
---
diff --git a/0020-deployUtil-use-os.uname-instead-of-bin-uname.patch b/0020-deployUtil-use-os.uname-instead-of-bin-uname.patch
new file mode 100644
index 0000000..02e9d3d
--- /dev/null
+++ b/0020-deployUtil-use-os.uname-instead-of-bin-uname.patch
@@ -0,0 +1,63 @@
+From 1be9207d91f1f3df02161356f0057c24b6a230c3 Mon Sep 17 00:00:00 2001
+From: Dan Kenigsberg <danken at redhat.com>
+Date: Tue, 19 Jun 2012 00:52:25 +0300
+Subject: [PATCH 20/25] deployUtil: use os.uname instead of /bin/uname
+
+simpler, quicker, and less error-prone.
+
+Change-Id: I7abc1f010bbf15b39d7590c4b55d1835c645a87f
+Signed-off-by: Dan Kenigsberg <danken at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5636
+Tested-by: Douglas Schilling Landgraf <dougsland at redhat.com>
+Reviewed-by: Douglas Schilling Landgraf <dougsland at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5749
+---
+ configure.ac              |    1 -
+ vdsm_reg/deployUtil.py.in |   11 ++---------
+ 2 files changed, 2 insertions(+), 10 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index f3a609f..7b829f5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -177,7 +177,6 @@ AC_PATH_PROG([TC_PATH], [tc], [/sbin/tc])
+ AC_PATH_PROG([TUNE2FS_PATH], [tune2fs], [/sbin/tune2fs])
+ AC_PATH_PROG([UDEVADM_PATH], [udevadm], [/sbin/udevadm])
+ AC_PATH_PROG([UMOUNT_PATH], [umount], [/bin/umount])
+-AC_PATH_PROG([UNAME_PATH], [uname], [/bin/uname])
+ AC_PATH_PROG([UNPERSIST_PATH], [unpersist], [/usr/sbin/unpersist])
+ AC_PATH_PROG([VCONFIG_PATH], [vconfig], [/sbin/vconfig])
+ AC_PATH_PROG([WGET_PATH], [wget], [/usr/bin/wget])
+diff --git a/vdsm_reg/deployUtil.py.in b/vdsm_reg/deployUtil.py.in
+index 2f240cc..7586aca 100644
+--- a/vdsm_reg/deployUtil.py.in
++++ b/vdsm_reg/deployUtil.py.in
+@@ -72,7 +72,6 @@ EX_RPM = '@RPM_PATH@'
+ EX_SED = '@SED_PATH@'
+ EX_SERVICE = '@SERVICE_PATH@'
+ EX_SYSTEMCTL = '@SYSTEMCTL_PATH@'
+-EX_UNAME = '@UNAME_PATH@'
+ EX_YUM = '@YUM_PATH@'
+ 
+ # Other constants
+@@ -400,15 +399,9 @@ def getOSVersion():
+         return "Unknown OS"
+ 
+ def getKernelVersion():
+-    """
+-        Return current kernel release.
+-    """
+-    strReturn = '0'
+-    out, err, rc = _logExec([EX_UNAME, "-r"])
+-    if not rc:
+-        strReturn = out
++    """Return current kernel version adn release."""
+ 
+-    return strReturn
++    return os.uname()[2]
+ 
+ def updateKernelArgs(arg):
+     """
+-- 
+1.7.10.2
+
diff --git a/0021-deployUtil-slightly-saner-kernel-version-comparison.patch b/0021-deployUtil-slightly-saner-kernel-version-comparison.patch
new file mode 100644
index 0000000..29fdb43
--- /dev/null
+++ b/0021-deployUtil-slightly-saner-kernel-version-comparison.patch
@@ -0,0 +1,125 @@
+From 61672ca8a0d5140aa09ae79c5c0f7b962495a94e Mon Sep 17 00:00:00 2001
+From: Dan Kenigsberg <danken at redhat.com>
+Date: Tue, 19 Jun 2012 02:00:14 +0300
+Subject: [PATCH 21/25] deployUtil: slightly saner kernel version comparison
+
+Change-Id: If2348ce464943e873e31eb61d0aaaa8b936679b2
+Signed-off-by: Dan Kenigsberg <danken at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5637
+Reviewed-by: Douglas Schilling Landgraf <dougsland at redhat.com>
+Tested-by: Douglas Schilling Landgraf <dougsland at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5750
+---
+ vds_bootstrap/vds_bootstrap.py |   33 ++++++++-------------------------
+ vdsm_reg/deployUtil.py.in      |   16 +++++++++++++---
+ 2 files changed, 21 insertions(+), 28 deletions(-)
+
+diff --git a/vds_bootstrap/vds_bootstrap.py b/vds_bootstrap/vds_bootstrap.py
+index 9801459..5ddc950 100755
+--- a/vds_bootstrap/vds_bootstrap.py
++++ b/vds_bootstrap/vds_bootstrap.py
+@@ -48,7 +48,6 @@ import shutil
+ import logging
+ import logging.config
+ import random
+-import re
+ import ConfigParser
+ import socket
+ import tempfile
+@@ -81,14 +80,12 @@ fedorabased = deployUtil.versionCompare(deployUtil.getOSVersion(), "16") >= 0
+ if rhel6based:
+     VDSM_NAME = "vdsm"
+     VDSM_MIN_VER = "4.9"
+-    KERNEL_VER = "2.6.32-.*.el6"
+-    KERNEL_MIN_VER = 150
++    KERNEL_MIN_VR = ("2.6.32", "150")
+     MINIMAL_SUPPORTED_PLATFORM = "6.0"
+ else:
+     VDSM_NAME = "vdsm22"
+     VDSM_MIN_VER = "4.5"
+-    KERNEL_VER = "2.6.18-.*.el5"
+-    KERNEL_MIN_VER = 159
++    KERNEL_MIN_VR = ("2.6.18", "159")
+     MINIMAL_SUPPORTED_PLATFORM = "5.5"
+ 
+ # Required packages
+@@ -300,7 +297,6 @@ class Deploy:
+         """
+             Check the compatibility of OS and kernel
+         """
+-        kernel_ver = None
+         os_status = "FAIL"
+         kernel_status = "FAIL"
+         os_message = "Unsupported platform version"
+@@ -329,34 +325,21 @@ class Deploy:
+             os_status = "OK"
+ 
+         if self.rc:
+-            res = deployUtil.getKernelVersion()
+-            try:
+-                kernel_ver = res.split()[0]
+-                if re.match(KERNEL_VER, kernel_ver):
+-                    kernel_ver = int(kernel_ver.split('-')[1].split('.')[0])
+-                else:
+-                    kernel_ver = 0
+-            except:
+-                kernel_ver = 0
+-
+-            if fedorabased:
+-                kernel_status = "OK"
+-                kernel_message = "Skipped kernel version check"
+-            elif kernel_ver >= KERNEL_MIN_VER:
++            kernel_vr = deployUtil.getKernelVR()
++            if deployUtil.compareVR(kernel_vr, KERNEL_MIN_VR) >= 0:
+                 kernel_status = "OK"
+-                kernel_message = "Supported kernel version: " + str(kernel_ver)
++                kernel_message = "Supported kernel version: " + str(kernel_vr)
+             else:
+                 kernel_status = "FAIL"
+                 kernel_message = (
+-                    "Unsupported kernel version: " + str(kernel_ver) +
+-                    ". Minimal supported version: " + str(KERNEL_MIN_VER)
++                    "Unsupported kernel version: " + str(kernel_vr) +
++                    ". Minimal supported version: " + str(KERNEL_MIN_VR)
+                 )
+                 self.rc = False
+ 
+         if os_name is not None:
+             self._xmlOutput('OS', os_status, "type", os_name, os_message)
+-        if kernel_ver is not None:
+-            self._xmlOutput('KERNEL', kernel_status, "version", kernel_ver, kernel_message)
++        self._xmlOutput('KERNEL', kernel_status, "version", '-'.join(kernel_vr), kernel_message)
+ 
+         return self.rc
+ 
+diff --git a/vdsm_reg/deployUtil.py.in b/vdsm_reg/deployUtil.py.in
+index 7586aca..6bd4b3d 100644
+--- a/vdsm_reg/deployUtil.py.in
++++ b/vdsm_reg/deployUtil.py.in
+@@ -398,10 +398,20 @@ def getOSVersion():
+         logging.error('failed to parse os release from `%s`.', s, exc_info=True)
+         return "Unknown OS"
+ 
+-def getKernelVersion():
+-    """Return current kernel version adn release."""
++def getKernelVR():
++    """Return current kernel version and release."""
+ 
+-    return os.uname()[2]
++    components = os.uname()[2].split('-', 1)
++    if len(components) == 2:
++        return components
++    else:
++        return components[0], '0'
++
++def compareVR(vr1, vr2):
++    import rpmUtils.miscutils
++
++    return rpmUtils.miscutils.compareEVR((0, vr1[0], vr1[1]),
++                                         (0, vr2[0], vr2[1]))
+ 
+ def updateKernelArgs(arg):
+     """
+-- 
+1.7.10.2
+
diff --git a/0022-BZ-835784-Allow-to-create-a-network-on-top-of-existi.patch b/0022-BZ-835784-Allow-to-create-a-network-on-top-of-existi.patch
new file mode 100644
index 0000000..61d75a7
--- /dev/null
+++ b/0022-BZ-835784-Allow-to-create-a-network-on-top-of-existi.patch
@@ -0,0 +1,39 @@
+From 44a2eba8d6c7a7ea9e78454388b859304398ec8d Mon Sep 17 00:00:00 2001
+From: Igor Lvovsky <ilvovsky at redhat.com>
+Date: Wed, 27 Jun 2012 10:37:28 +0300
+Subject: [PATCH 22/25] BZ#835784 - Allow to create a network on top of
+ existing bond in additional to create a new bond and
+ network
+
+If we already have a bond0 with (eth1, eth2) and now we want to create
+network "bridge_woVlan" on top of it and in additional we want to create
+a new bond1 with (eth3, eth4) and create a network "bridge_woVlan_2" on
+top of bond 1.
+This patch will allow us to do it in the same setupNetwork command.
+
+Change-Id: I67d24d656934ea9dcb0a8209c6a375e19c23f82b
+Signed-off-by: Igor Lvovsky <ilvovsky at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5737
+Reviewed-on: http://gerrit.ovirt.org/5759
+Reviewed-by: Dan Kenigsberg <danken at redhat.com>
+Tested-by: Dan Kenigsberg <danken at redhat.com>
+---
+ vdsm/configNetwork.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vdsm/configNetwork.py b/vdsm/configNetwork.py
+index c535499..d4e1177 100755
+--- a/vdsm/configNetwork.py
++++ b/vdsm/configNetwork.py
+@@ -1085,7 +1085,7 @@ def setupNetworks(networks={}, bondings={}, **options):
+                 if 'bonding' in d:
+                     # we may not receive any information
+                     # about the bonding device if it is unchanged
+-                    if bondings:
++                    if bondings.get(d['bonding']):
+                         d['nics'] = bondings[d['bonding']]['nics']
+                         d['bondingOptions'] = bondings[d['bonding']].get('options',
+                                                                          None)
+-- 
+1.7.10.2
+
diff --git a/0023-BZ-833119-Allow-to-create-VLANed-network-on-top-of-e.patch b/0023-BZ-833119-Allow-to-create-VLANed-network-on-top-of-e.patch
new file mode 100644
index 0000000..0591e56
--- /dev/null
+++ b/0023-BZ-833119-Allow-to-create-VLANed-network-on-top-of-e.patch
@@ -0,0 +1,77 @@
+From 16d2eff4fc41a2a8c87923ed9d5d97cca3037144 Mon Sep 17 00:00:00 2001
+From: Dan Kenigsberg <danken at redhat.com>
+Date: Wed, 20 Jun 2012 16:36:08 +0300
+Subject: [PATCH 23/25] BZ#833119 - Allow to create VLANed network on top of
+ existing bond
+
+The (relatively) new setupNetwork verb allows to specify a network on
+top of an existing bonding device. The nics of this bonds are taken
+implictly from current host configuration.
+
+Change-Id: If45aed68847f5a79380c629a70290a2c687cbd30
+Signed-off-by: Igor Lvovsky <ilvovsky at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5456
+Reviewed-by: Dan Kenigsberg <danken at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5760
+---
+ vdsm/configNetwork.py |   23 ++++++++++++++++-------
+ 1 file changed, 16 insertions(+), 7 deletions(-)
+
+diff --git a/vdsm/configNetwork.py b/vdsm/configNetwork.py
+index d4e1177..8c4d36d 100755
+--- a/vdsm/configNetwork.py
++++ b/vdsm/configNetwork.py
+@@ -238,7 +238,8 @@ class ConfigWriter(object):
+         s += 'NM_CONTROLLED=no\n'
+         BLACKLIST = ['TYPE', 'NAME', 'DEVICE', 'bondingOptions',
+                      'force', 'blockingdhcp',
+-                     'connectivityCheck', 'connectivityTimeout']
++                     'connectivityCheck', 'connectivityTimeout',
++                     'implicitBonding']
+         for k in set(kwargs.keys()).difference(set(BLACKLIST)):
+             if re.match('^[a-zA-Z_]\w*$', k):
+                 s += '%s=%s\n' % (k.upper(), pipes.quote(kwargs[k]))
+@@ -491,10 +492,17 @@ def validateVlanId(vlan):
+         raise ConfigNetworkError(ne.ERR_BAD_VLAN, 'vlan id must be a number')
+ 
+ 
+-def _addNetworkValidation(_netinfo, bridge, vlan, bonding, nics, ipaddr, netmask, gateway,
+-        bondingOptions, bridged=True):
+-    if (vlan or bonding) and not nics:
+-        raise ConfigNetworkError(ne.ERR_BAD_PARAMS, 'vlan/bonding definition requires nics. got: %r'%(nics,))
++def _addNetworkValidation(_netinfo, bridge, vlan, bonding, nics, ipaddr,
++                          netmask, gateway, bondingOptions, bridged=True,
++                          implicitBonding=False):
++    # The (relatively) new setupNetwork verb allows to specify a network on
++    # top of an existing bonding device. The nics of this bonds are taken
++    # implictly from current host configuration
++    if bonding and implicitBonding:
++        pass
++    elif (vlan or bonding) and not nics:
++        raise ConfigNetworkError(ne.ERR_BAD_PARAMS,
++                'vlan/bonding definition requires nics. got: %r' % (nics,))
+ 
+     # Check bridge
+     if bridged:
+@@ -583,7 +591,7 @@ def addNetwork(network, vlan=None, bonding=None, nics=None, ipaddr=None, netmask
+         _addNetworkValidation(_netinfo, bridge=network if bridged else None,
+                 vlan=vlan, bonding=bonding, nics=nics, ipaddr=ipaddr,
+                 netmask=netmask, gateway=gateway, bondingOptions=bondingOptions,
+-                bridged=bridged)
++                bridged=bridged, **options)
+ 
+     logging.info("Adding network %s with vlan=%s, bonding=%s, nics=%s,"
+                  " bondingOptions=%s, mtu=%s, bridged=%s, options=%s",
+@@ -1097,7 +1105,8 @@ def setupNetworks(networks={}, bondings={}, **options):
+                 d['force'] = force
+ 
+                 logger.debug("Adding network %r" % network)
+-                addNetwork(network, configWriter=configWriter, **d)
++                addNetwork(network, configWriter=configWriter,
++                           implicitBonding=True, **d)
+ 
+             # Do not handle a bonding device twice.
+             # We already handled it before during addNetwork.
+-- 
+1.7.10.2
+
diff --git a/0024-BZ-833803-Avoid-bond-breaking-after-network-detach.patch b/0024-BZ-833803-Avoid-bond-breaking-after-network-detach.patch
new file mode 100644
index 0000000..ed2d15f
--- /dev/null
+++ b/0024-BZ-833803-Avoid-bond-breaking-after-network-detach.patch
@@ -0,0 +1,72 @@
+From 66cf76b0d2dc362bb698df2b0ec491a54dc55d5c Mon Sep 17 00:00:00 2001
+From: Igor Lvovsky <ilvovsky at redhat.com>
+Date: Mon, 25 Jun 2012 17:46:43 +0300
+Subject: [PATCH 24/25] BZ#833803 - Avoid bond breaking after network detach
+
+The (relatively) new setupNetwork verb allows to remove a network
+defined on top of an bonding device without break the bond itself.
+
+Change-Id: Idebd0cd0a9d54ceb3714a8cd82fe042ed2c05f2e
+Signed-off-by: Igor Lvovsky <ilvovsky at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5711
+Reviewed-by: Dan Kenigsberg <danken at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5761
+---
+ vdsm/configNetwork.py |   26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
+
+diff --git a/vdsm/configNetwork.py b/vdsm/configNetwork.py
+index 8c4d36d..96dd452 100755
+--- a/vdsm/configNetwork.py
++++ b/vdsm/configNetwork.py
+@@ -734,7 +734,7 @@ def listNetworks():
+     print "Bondings:", _netinfo.bondings.keys()
+ 
+ def delNetwork(network, vlan=None, bonding=None, nics=None, force=False,
+-               configWriter=None, **options):
++               configWriter=None, implicitBonding=True, **options):
+     _netinfo = NetInfo()
+ 
+     validateBridgeName(network)
+@@ -786,16 +786,19 @@ def delNetwork(network, vlan=None, bonding=None, nics=None, force=False,
+                         stderr=subprocess.PIPE)
+         configWriter.removeVlan(vlan, bonding or nics[0])
+ 
+-    if bonding:
+-        if not bridged or not bondingOtherUsers(network, vlan, bonding):
+-            ifdown(bonding)
+-            configWriter.removeBonding(bonding)
++    # The (relatively) new setupNetwork verb allows to remove a network
++    # defined on top of an bonding device without break the bond itself.
++    if implicitBonding:
++        if bonding:
++            if not bridged or not bondingOtherUsers(network, vlan, bonding):
++                ifdown(bonding)
++                configWriter.removeBonding(bonding)
+ 
+-    for nic in nics:
+-        nicUsers = nicOtherUsers(network, vlan, bonding, nic)
+-        if not nicUsers:
+-            ifdown(nic)
+-            configWriter.removeNic(nic)
++        for nic in nics:
++            nicUsers = nicOtherUsers(network, vlan, bonding, nic)
++            if not nicUsers:
++                ifdown(nic)
++                configWriter.removeNic(nic)
+ 
+ def clientSeen(timeout):
+     start = time.time()
+@@ -1081,7 +1084,8 @@ def setupNetworks(networks={}, bondings={}, **options):
+             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, configWriter=configWriter, force=force,
++                               implicitBonding=False)
+                     if 'remove' in networkAttrs:
+                         del networks[network]
+                 else:
+-- 
+1.7.10.2
+
diff --git a/0025-Handle-bond-properly-if-connectivity-check-fail.patch b/0025-Handle-bond-properly-if-connectivity-check-fail.patch
new file mode 100644
index 0000000..fe27672
--- /dev/null
+++ b/0025-Handle-bond-properly-if-connectivity-check-fail.patch
@@ -0,0 +1,70 @@
+From 31eac2c98a865a94803785fa660b612d5231c5c4 Mon Sep 17 00:00:00 2001
+From: Igor Lvovsky <ilvovsky at redhat.com>
+Date: Tue, 26 Jun 2012 15:41:37 +0300
+Subject: [PATCH 25/25] Handle bond properly if connectivity check fail.
+
+We need to be able remove  a new added network if connectivity check fail.
+If a new network needs to be created on top of existing bond,
+we will need to keep the bond on rollback flow,
+else we will break the new created bond
+
+Change-Id: I4bb04f6f3b8d5cdbfd9af8904570af071af6d4f4
+Signed-off-by: Igor Lvovsky <ilvovsky at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5712
+Reviewed-by: Dan Kenigsberg <danken at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5762
+---
+ vdsm/configNetwork.py |   16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/vdsm/configNetwork.py b/vdsm/configNetwork.py
+index 96dd452..af6c19d 100755
+--- a/vdsm/configNetwork.py
++++ b/vdsm/configNetwork.py
+@@ -1065,7 +1065,13 @@ def setupNetworks(networks={}, bondings={}, **options):
+     try:
+         _netinfo = NetInfo()
+         configWriter = ConfigWriter()
+-        networksAdded = []
++        networksAdded = set()
++        # keep set netsWithNewBonds to be able remove
++        # a new added network if connectivity check fail.
++        # If a new network needs to be created on top of existing bond,
++        # we will need to keep the bond on rollback flow,
++        # else we will break the new created bond.
++        netsWithNewBonds = set()
+ 
+         logger.debug("Setting up network according to configuration: "
+                      "networks:%r, bondings:%r, options:%r" % (networks,
+@@ -1089,7 +1095,7 @@ def setupNetworks(networks={}, bondings={}, **options):
+                     if 'remove' in networkAttrs:
+                         del networks[network]
+                 else:
+-                    networksAdded.append(network)
++                    networksAdded.add(network)
+ 
+             handledBonds = set()
+             for network, networkAttrs in networks.iteritems():
+@@ -1104,6 +1110,9 @@ def setupNetworks(networks={}, bondings={}, **options):
+                         # Don't remove bondX from the bonding list here,
+                         # because it may be in use for other networks
+                         handledBonds.add(d['bonding'])
++                        # we create a new bond
++                        if network in networksAdded:
++                            netsWithNewBonds.add(network)
+                 else:
+                     d['nics'] = [d.pop('nic')]
+                 d['force'] = force
+@@ -1130,7 +1139,8 @@ def setupNetworks(networks={}, bondings={}, **options):
+                                       CONNECTIVITY_TIMEOUT_DEFAULT))):
+                     logger.info('Connectivity check failed, rolling back')
+                     for network in networksAdded:
+-                        delNetwork(network, force=True)
++                        delNetwork(network, force=True,
++                                   implicitBonding=network in netsWithNewBonds)
+                     raise ConfigNetworkError(ne.ERR_LOST_CONNECTION,
+                                              'connectivity check failed')
+         except:
+-- 
+1.7.10.2
+
diff --git a/0026-BZ-806555-having-etc-ovirt-node-means-it-is-a-node.patch b/0026-BZ-806555-having-etc-ovirt-node-means-it-is-a-node.patch
new file mode 100644
index 0000000..62d3f85
--- /dev/null
+++ b/0026-BZ-806555-having-etc-ovirt-node-means-it-is-a-node.patch
@@ -0,0 +1,38 @@
+From b1a0e712b394496544bbb62f9466a8aa75f4c669 Mon Sep 17 00:00:00 2001
+From: Dan Kenigsberg <danken at redhat.com>
+Date: Tue, 26 Jun 2012 15:43:33 +0300
+Subject: [PATCH 26/26] BZ#806555 having /etc/ovirt-node-* means it is a node
+
+Not vice versa.
+
+This patch fixes http://gerrit.ovirt.org/3055 .
+
+Change-Id: Id13c5621a2ff1c8bdcfc1e40a27951efb0d75cfe
+Signed-off-by: Dan Kenigsberg <danken at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5713
+Reviewed-by: Michael Burns <mburns at redhat.com>
+Reviewed-by: Douglas Schilling Landgraf <dougsland at redhat.com>
+Tested-by: Ofer Schreiber <oschreib at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/5768
+Reviewed-by: Federico Simoncelli <fsimonce at redhat.com>
+Tested-by: Federico Simoncelli <fsimonce at redhat.com>
+---
+ vdsm/caps.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vdsm/caps.py b/vdsm/caps.py
+index 5950ee9..5c9fa78 100644
+--- a/vdsm/caps.py
++++ b/vdsm/caps.py
+@@ -156,7 +156,7 @@ def _getIscsiIniName():
+ def getos():
+     if os.path.exists('/etc/rhev-hypervisor-release'):
+         return OSName.RHEVH
+-    elif len(glob.glob('/etc/ovirt-node-*-release')) == 0:
++    elif glob.glob('/etc/ovirt-node-*-release'):
+         return OSName.OVIRT
+     elif os.path.exists('/etc/fedora-release'):
+         return OSName.FEDORA
+-- 
+1.7.10.2
+
diff --git a/vdsm.spec b/vdsm.spec
index 27e77b1..31cb3c3 100644
--- a/vdsm.spec
+++ b/vdsm.spec
@@ -20,7 +20,7 @@
 
 Name:           %{vdsm_name}
 Version:        4.10.0
-Release:        3%{?vdsm_relvtag}%{?dist}%{?extra_release}
+Release:        4%{?vdsm_relvtag}%{?dist}%{?extra_release}
 Summary:        Virtual Desktop Server Manager
 
 Group:          Applications/System
@@ -54,6 +54,13 @@ Patch15: 0016-BZ-826467-Allow-to-remove-bond-and-attach-network-to.patch
 Patch16: 0017-Related-to-BZ-826873-Allow-to-create-bond-without-ne.patch
 Patch17: 0018-BZ-832577-node-can-t-be-approved.patch
 Patch18: 0019-BZ-824298-fix-typo-in-keyword-argument-exc_info.patch
+Patch19: 0020-deployUtil-use-os.uname-instead-of-bin-uname.patch
+Patch20: 0021-deployUtil-slightly-saner-kernel-version-comparison.patch
+Patch21: 0022-BZ-835784-Allow-to-create-a-network-on-top-of-existi.patch
+Patch22: 0023-BZ-833119-Allow-to-create-VLANed-network-on-top-of-e.patch
+Patch23: 0024-BZ-833803-Avoid-bond-breaking-after-network-detach.patch
+Patch24: 0025-Handle-bond-properly-if-connectivity-check-fail.patch
+Patch25: 0026-BZ-806555-having-etc-ovirt-node-means-it-is-a-node.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -364,6 +371,13 @@ Gluster plugin enables VDSM to serve Gluster functionalities.
 %patch16 -p1 -b .patch16
 %patch17 -p1 -b .patch17
 %patch18 -p1 -b .patch18
+%patch19 -p1 -b .patch19
+%patch20 -p1 -b .patch20
+%patch21 -p1 -b .patch21
+%patch22 -p1 -b .patch22
+%patch23 -p1 -b .patch23
+%patch24 -p1 -b .patch24
+%patch25 -p1 -b .patch25
 
 %build
 %configure %{?with_hooks:--enable-hooks}
@@ -905,6 +919,16 @@ exit 0
 %{_datadir}/%{vdsm_name}/gluster/hostname.py*
 
 %changelog
+* Fri Jun 29 2012 Federico Simoncelli <fsimonce at redhat.com> 4.10.0-4.fc17
+- deployUtil: use os.uname instead of /bin/uname
+- deployUtil: slightly saner kernel version comparison
+- BZ#835784 - Allow to create a network on top of existing bond in additional
+  to create a new bond and network
+- BZ#833119 - Allow to create VLANed network on top of existing bond
+- BZ#833803 - Avoid bond breaking after network detach
+- Handle bond properly if connectivity check fail.
+- BZ#806555 having /etc/ovirt-node-* means it is a node
+
 * Tue Jun 26 2012 Federico Simoncelli <fsimonce at redhat.com> 4.10.0-3.fc17
 - BZ#832577: node can't be approved
 - BZ#824298 fix typo in keyword argument exc_info


More information about the scm-commits mailing list