[vdsm/f19] vdsm-4.13.3-2
Douglas Schilling Landgraf
dougsland at fedoraproject.org
Thu Jan 23 20:42:04 UTC 2014
commit 9dd949f176e2625dc0825d5a1ee2e6557244dab9
Author: Douglas Schilling Landgraf <dougsland at redhat.com>
Date: Thu Jan 23 15:41:12 2014 -0500
vdsm-4.13.3-2
- Report conflict when python-cpopen is installed
- F19 branch should contain the latest RC
0001-Using-old-form-of-zombiereaper.patch | 45 +++
...spec-Add-BuildRequires-to-python-argparse.patch | 33 --
0002-Revert-Using-old-form-of-zombiereaper.patch | 47 +++
...Revert-utils-Create-AsyncProcessOperation.patch | 164 ++++++++++
0004-Revert-iscsi-Iscsi-rescan-cleanup.patch | 316 ++++++++++++++++++++
...-conflict-when-python-cpopen-is-installed.patch | 35 +++
sources | 2 +-
vdsm.spec | 241 +++++-----------
8 files changed, 679 insertions(+), 204 deletions(-)
---
diff --git a/0001-Using-old-form-of-zombiereaper.patch b/0001-Using-old-form-of-zombiereaper.patch
new file mode 100644
index 0000000..1615ae5
--- /dev/null
+++ b/0001-Using-old-form-of-zombiereaper.patch
@@ -0,0 +1,45 @@
+From d1bb20a892d32822e8f04488fb12df0ffea76a04 Mon Sep 17 00:00:00 2001
+From: Yaniv Bronhaim <ybronhei at redhat.com>
+Date: Mon, 13 Jan 2014 14:55:35 +0200
+Subject: [PATCH 1/4] Using old form of zombiereaper
+
+In ovirt-3.3 we don't include the change [1] that modifies zombieReaper
+to zombiereaper.
+
+The import in utils.py cause an import error without having [1].
+
+[1] http://gerrit.ovirt.org/#/c/19253/
+
+Change-Id: I7483e09df69d07b8396e075726dd14efb42a5551
+Signed-off-by: Yaniv Bronhaim <ybronhei at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/23215
+Reviewed-by: Dan Kenigsberg <danken at redhat.com>
+---
+ lib/vdsm/utils.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/vdsm/utils.py b/lib/vdsm/utils.py
+index 5a2f746..0d3ec91 100644
+--- a/lib/vdsm/utils.py
++++ b/lib/vdsm/utils.py
+@@ -48,7 +48,7 @@ import stat
+ import subprocess
+ import threading
+ import time
+-import zombiereaper
++import zombieReaper
+
+ from cpopen import CPopen as BetterPopen
+ from config import config
+@@ -983,7 +983,7 @@ class AsyncProcessOperation(object):
+
+ def __del__(self):
+ if self._proc.returncode is None:
+- zombiereaper.autoReapPID(self._proc.pid)
++ zombieReaper.autoReapPID(self._proc.pid)
+
+
+ def panic(msg):
+--
+1.8.4.2
+
diff --git a/0002-Revert-Using-old-form-of-zombiereaper.patch b/0002-Revert-Using-old-form-of-zombiereaper.patch
new file mode 100644
index 0000000..e8de0ea
--- /dev/null
+++ b/0002-Revert-Using-old-form-of-zombiereaper.patch
@@ -0,0 +1,47 @@
+From d3c7870167cdab24be231756f0753a83728fcf32 Mon Sep 17 00:00:00 2001
+From: Yaniv Bronhaim <ybronhei at redhat.com>
+Date: Mon, 13 Jan 2014 17:44:05 +0200
+Subject: [PATCH 2/4] Revert "Using old form of zombiereaper"
+
+This reverts commit d1bb20a892d32822e8f04488fb12df0ffea76a04.
+
+This patch didn't resolve the problem, it just fixed the build errors.
+Still the import is invalid as zombieReaper located under
+/usr/share/vdsm and utils.py runs for site-packages and cannot locate
+it. This revert comes aside to backport of
+http://gerrit.ovirt.org/#/c/23213/ that arrange the issue.
+
+Change-Id: If6a970cdd17c9dbf5544f68e406e6667344df900
+Signed-off-by: Yaniv Bronhaim <ybronhei at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/23228
+Reviewed-by: Dan Kenigsberg <danken at redhat.com>
+Tested-by: Dan Kenigsberg <danken at redhat.com>
+---
+ lib/vdsm/utils.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/vdsm/utils.py b/lib/vdsm/utils.py
+index 0d3ec91..5a2f746 100644
+--- a/lib/vdsm/utils.py
++++ b/lib/vdsm/utils.py
+@@ -48,7 +48,7 @@ import stat
+ import subprocess
+ import threading
+ import time
+-import zombieReaper
++import zombiereaper
+
+ from cpopen import CPopen as BetterPopen
+ from config import config
+@@ -983,7 +983,7 @@ class AsyncProcessOperation(object):
+
+ def __del__(self):
+ if self._proc.returncode is None:
+- zombieReaper.autoReapPID(self._proc.pid)
++ zombiereaper.autoReapPID(self._proc.pid)
+
+
+ def panic(msg):
+--
+1.8.4.2
+
diff --git a/0003-Revert-utils-Create-AsyncProcessOperation.patch b/0003-Revert-utils-Create-AsyncProcessOperation.patch
new file mode 100644
index 0000000..a7332a0
--- /dev/null
+++ b/0003-Revert-utils-Create-AsyncProcessOperation.patch
@@ -0,0 +1,164 @@
+From c0239063a8ecc595beff62d6e6f3795146771a45 Mon Sep 17 00:00:00 2001
+From: Yaniv Bronhaim <ybronhei at redhat.com>
+Date: Mon, 13 Jan 2014 18:45:36 +0200
+Subject: [PATCH 3/4] Revert "utils: Create AsyncProcessOperation"
+
+This reverts commit ed426e5590df421bace0aef9fc802baf2a24a5f2.
+
+Change-Id: I4a4d42db21d4541d955af415898d9cdedd83275b
+Signed-off-by: Yaniv Bronhaim <ybronhei at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/23234
+---
+ lib/vdsm/utils.py | 50 ------------------------------------------
+ tests/utilsTests.py | 63 -----------------------------------------------------
+ 2 files changed, 113 deletions(-)
+
+diff --git a/lib/vdsm/utils.py b/lib/vdsm/utils.py
+index 5a2f746..ef0f512 100644
+--- a/lib/vdsm/utils.py
++++ b/lib/vdsm/utils.py
+@@ -48,7 +48,6 @@ import stat
+ import subprocess
+ import threading
+ import time
+-import zombiereaper
+
+ from cpopen import CPopen as BetterPopen
+ from config import config
+@@ -937,55 +936,6 @@ def retry(func, expectedException=Exception, tries=None,
+ time.sleep(sleep)
+
+
+-class AsyncProcessOperation(object):
+- def __init__(self, proc, resultParser=None):
+- """Wraps a running process operation.
+-
+- resultParser should be of type callback(rc, out, err) and can return
+- anything or throw exceptions."""
+- self._lock = threading.Lock()
+-
+- self._result = None
+- self._resultParser = resultParser
+-
+- self._proc = proc
+-
+- def wait(self, timeout=None, cond=None):
+- """Waits until the process has exited, the timeout has been reached or
+- the condition has been met"""
+- return self._proc.wait(timeout, cond)
+-
+- def stop(self):
+- """Stops the running operation, effectively sending a kill signal to
+- the process"""
+- self._proc.kill()
+-
+- def result(self):
+- """Returns the result in the as a tuple of (result, error).
+- If the operation is still running it will block until it returns.
+-
+- If no resultParser has been set the default result
+- is (rc, out, err) """
+- with self._lock:
+- if self._result is None:
+- out, err = self._proc.communicate()
+- rc = self._proc.returncode
+- if self._resultParser is not None:
+- try:
+- self._result = (self._resultParser(rc, out, err),
+- None)
+- except Exception as e:
+- self._result = (None, e)
+- else:
+- self._result = ((rc, out, err), None)
+-
+- return self._result
+-
+- def __del__(self):
+- if self._proc.returncode is None:
+- zombiereaper.autoReapPID(self._proc.pid)
+-
+-
+ def panic(msg):
+ logging.error("Panic: %s", msg, exc_info=True)
+ os.killpg(0, 9)
+diff --git a/tests/utilsTests.py b/tests/utilsTests.py
+index 4dc6579..5f7c82d 100644
+--- a/tests/utilsTests.py
++++ b/tests/utilsTests.py
+@@ -24,7 +24,6 @@ import logging
+ from testrunner import VdsmTestCase as TestCaseBase
+ from vdsm import utils
+ from storage import misc
+-import time
+
+
+ class RetryTests(TestCaseBase):
+@@ -141,65 +140,3 @@ class TracebackTests(TestCaseBase):
+ def handle(self, record):
+ assert self.record is None
+ self.record = record
+-
+-
+-class AsyncProcessOperationTests(TestCaseBase):
+- def _echo(self, text):
+- proc = misc.execCmd(["echo", "-n", "test"], sync=False)
+-
+- def parse(rc, out, err):
+- return out
+-
+- return utils.AsyncProcessOperation(proc, parse)
+-
+- def _sleep(self, t):
+- proc = misc.execCmd(["sleep", str(t)], sync=False)
+- return utils.AsyncProcessOperation(proc)
+-
+- def _fail(self, t):
+- proc = misc.execCmd(["sleep", str(t)], sync=False)
+-
+- def parse(rc, out, err):
+- raise Exception("TEST!!!")
+-
+- return utils.AsyncProcessOperation(proc, parse)
+-
+- def test(self):
+- aop = self._sleep(1)
+- self.assertEquals(aop.result(), ((0, "", ""), None))
+-
+- def testAlreadyExitedSuccess(self):
+- aop = self._sleep(0)
+- time.sleep(1)
+- self.assertEquals(aop.result(), ((0, "", ""), None))
+-
+- def testAlreadyExitedFail(self):
+- aop = self._sleep("hello")
+- time.sleep(1)
+- ((rc, out, err), err) = aop.result()
+- self.assertEquals(err, None)
+- self.assertEquals(rc, 1)
+-
+- def testWait(self):
+- aop = self._sleep(1)
+- aop.wait(timeout=2)
+-
+- def testParser(self):
+- aop = self._echo("test")
+- self.assertEquals(aop.result(), ("test", None))
+-
+- def testStop(self):
+- aop = self._sleep(10)
+- aop.stop()
+-
+- start = time.time()
+- aop.result()
+- end = time.time()
+- duration = end - start
+- self.assertTrue(duration < 2)
+-
+- def testException(self):
+- aop = self._fail(1)
+- res, err = aop.result()
+- self.assertEquals(res, None)
+- self.assertNotEquals(err, None)
+--
+1.8.4.2
+
diff --git a/0004-Revert-iscsi-Iscsi-rescan-cleanup.patch b/0004-Revert-iscsi-Iscsi-rescan-cleanup.patch
new file mode 100644
index 0000000..178891a
--- /dev/null
+++ b/0004-Revert-iscsi-Iscsi-rescan-cleanup.patch
@@ -0,0 +1,316 @@
+From fb564a48f76a38575df56df5dde2e3cf00f586e6 Mon Sep 17 00:00:00 2001
+From: Yaniv Bronhaim <ybronhei at redhat.com>
+Date: Mon, 13 Jan 2014 18:45:24 +0200
+Subject: [PATCH 4/4] Revert "iscsi: Iscsi rescan cleanup"
+
+This reverts commit 9df615a98ef98a3111f691c0f1dd47a979b48032.
+
+Change-Id: Ie28d733ac86d0b7379bbe406bfcdc7779bc0402a
+Signed-off-by: Yaniv Bronhaim <ybronhei at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/23233
+---
+ tests/Makefile.am | 1 -
+ tests/iscsiTests.py | 80 -----------------------------------------------
+ vdsm.spec.in | 2 +-
+ vdsm/storage/iscsi.py | 59 +++++++++++++++++++++++++++-------
+ vdsm/storage/iscsiadm.py | 24 +++++---------
+ vdsm/storage/multipath.py | 2 ++
+ vdsm/supervdsmServer | 5 +++
+ 7 files changed, 62 insertions(+), 111 deletions(-)
+ delete mode 100644 tests/iscsiTests.py
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 5efae38..f87eddd 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -37,7 +37,6 @@ test_modules = \
+ guestIFTests.py \
+ hooksTests.py \
+ ipwrapperTests.py \
+- iscsiTests.py \
+ jsonRpcTests.py \
+ jsonRpcUtils.py \
+ libvirtconnectionTests.py \
+diff --git a/tests/iscsiTests.py b/tests/iscsiTests.py
+deleted file mode 100644
+index 44f6962..0000000
+--- a/tests/iscsiTests.py
++++ /dev/null
+@@ -1,80 +0,0 @@
+-import threading
+-import time
+-from contextlib import contextmanager
+-
+-from testrunner import VdsmTestCase as TestCaseBase
+-
+-from storage import iscsi
+-
+-
+-class AsyncStubOperation(object):
+- def __init__(self, timeout):
+- self._evt = threading.Event()
+- if timeout == 0:
+- self._evt.set()
+- else:
+- threading.Timer(timeout, self._evt.set)
+-
+- def wait(self, timeout=None, cond=None):
+- if cond is not None:
+- raise Exception("TODO!!!")
+-
+- self._evt.wait(timeout)
+-
+- def stop(self):
+- self._evt.set()
+-
+- def result(self):
+- if self._evt.is_set():
+- return (None, None)
+- else:
+- return None
+-
+-
+-class RescanTimeoutTests(TestCaseBase):
+- def setUp(self):
+- self._iscsiadm_rescan_async = \
+- iscsi.iscsiadm.session_rescan_async
+- iscsi.iscsiadm.session_rescan_async = self._iscsi_stub
+- self._timeout = 0
+-
+- def tearDown(self):
+- iscsi.iscsiadm.session_rescan_async = \
+- self._iscsiadm_rescan_async
+-
+- def _iscsi_stub(self):
+- return AsyncStubOperation(self._timeout)
+-
+- @contextmanager
+- def assertMaxDuration(self, maxtime):
+- start = time.time()
+- try:
+- yield
+- finally:
+- end = time.time()
+- elapsed = end - start
+- if maxtime < elapsed:
+- self.fail("Operation was too slow %fs > %fs" %
+- (elapsed, maxtime))
+-
+- @contextmanager
+- def assertMinDuration(self, mintime):
+- start = time.time()
+- try:
+- yield
+- finally:
+- end = time.time()
+- elapsed = end - start
+- if mintime > elapsed:
+- self.fail("Operation was too fast %fs > %fs" %
+- (elapsed, mintime))
+-
+- def testFast(self):
+- self._timeout = 0
+- with self.assertMinDuration(2):
+- iscsi.rescan(2, 4)
+-
+- def testSlow(self):
+- self._timeout = 60
+- with self.assertMaxDuration(3):
+- iscsi.rescan(1, 2)
+diff --git a/vdsm.spec.in b/vdsm.spec.in
+index 8d3ba09..9aeb607 100644
+--- a/vdsm.spec.in
++++ b/vdsm.spec.in
+@@ -146,7 +146,7 @@ Requires: python
+ # Update the qemu-kvm requires when block_stream will be included
+ Requires: qemu-kvm >= 2:0.12.1.2-2.295.el6_3.4
+ Requires: qemu-img >= 2:0.12.1.2-2.295.el6_3.4
+-Requires: iscsi-initiator-utils >= 6.2.0.873-3
++Requires: iscsi-initiator-utils >= 6.2.0.872-15
+ Requires: device-mapper-multipath >= 0.4.9-52
+ Requires: e2fsprogs >= 1.41.12-11
+ Requires: fence-agents
+diff --git a/vdsm/storage/iscsi.py b/vdsm/storage/iscsi.py
+index f4fdceb..7da94ab 100644
+--- a/vdsm/storage/iscsi.py
++++ b/vdsm/storage/iscsi.py
+@@ -30,6 +30,7 @@ import errno
+ import time
+ from collections import namedtuple
+
++from vdsm import constants
+ import misc
+ from vdsm.config import config
+ import devicemapper
+@@ -372,15 +373,38 @@ def iterateIscsiInterfaces():
+
+
+ @misc.samplingmethod
+-def rescan(minTimeout=None, maxTimeout=None):
+- # FIXME: This whole thing is wrong from the core. We need to make rescan
+- # completely async and have methods timeout on their own if they
+- # can't find the devices they are looking for
+- if minTimeout is None:
+- minTimeout = config.getint('irs', 'scsi_rescan_minimal_timeout')
+- if maxTimeout is None:
+- maxTimeout = config.getint('irs', 'scsi_rescan_maximal_timeout')
++def rescan():
++ try:
++ iscsiadm.session_rescan()
++ except iscsiadm.IscsiError:
++ pass
++
+
++ at misc.samplingmethod
++def forceScsiScan():
++ processes = []
++ minTimeout = config.getint('irs', 'scsi_rescan_minimal_timeout')
++ maxTimeout = config.getint('irs', 'scsi_rescan_maximal_timeout')
++ for hba in glob.glob(SCAN_PATTERN):
++ cmd = [constants.EXT_DD, 'of=' + hba]
++ p = misc.execCmd(cmd, sudo=False, sync=False)
++ try:
++ p.stdin.write("- - -")
++ p.stdin.flush()
++ p.stdin.close()
++ except OSError as e:
++ if p.wait(0) is False:
++ log.error("pid %s still running", p.pid)
++ log.warning("Error in rescan of hba:%s with returncode:%s and "
++ "error message: %s", hba, p.returncode,
++ p.stderr.read(1000))
++ if e.errno != errno.EPIPE:
++ raise
++ else:
++ log.warning("Ignoring error in rescan of hba %s: ",
++ hba, exc_info=True)
++ continue
++ processes.append((hba, p))
+ if (minTimeout > maxTimeout or minTimeout < 0):
+ minTimeout = 2
+ maxTimeout = 30
+@@ -388,13 +412,24 @@ def rescan(minTimeout=None, maxTimeout=None):
+ "illegal value: scsi_rescan_minimal_timeout or "
+ "scsi_rescan_maximal_timeout. Set to %s and %s seconds "
+ "respectively.", minTimeout, maxTimeout)
+-
+ log.debug("Performing SCSI scan, this will take up to %s seconds",
+ maxTimeout)
+-
+- rescanOp = iscsiadm.session_rescan_async()
+ time.sleep(minTimeout)
+- rescanOp.wait(timeout=(maxTimeout - minTimeout))
++ for i in xrange(maxTimeout - minTimeout):
++ for p in processes[:]:
++ (hba, proc) = p
++ if proc.wait(0):
++ if proc.returncode != 0:
++ log.warning('returncode for: %s is: %s', hba,
++ proc.returncode)
++ processes.remove(p)
++ if not processes:
++ break
++ else:
++ time.sleep(1)
++ else:
++ log.warning("Still waiting for scsi scan of hbas: %s",
++ tuple(hba for p in processes))
+
+
+ def devIsiSCSI(dev):
+diff --git a/vdsm/storage/iscsiadm.py b/vdsm/storage/iscsiadm.py
+index 9bb27ea..cd28db8 100644
+--- a/vdsm/storage/iscsiadm.py
++++ b/vdsm/storage/iscsiadm.py
+@@ -1,7 +1,6 @@
+ from threading import Lock
+ import misc
+ from vdsm import constants
+-from vdsm.utils import AsyncProcessOperation
+
+ # iscsiadm exit statuses
+ ISCSI_ERR_SESS_EXISTS = 15
+@@ -72,7 +71,7 @@ _RESERVED_INTERFACES = ("default", "tcp", "iser")
+ _iscsiadmLock = Lock()
+
+
+-def _runCmd(args, hideValue=False, sync=True):
++def _runCmd(args, hideValue=False):
+ # FIXME: I don't use supervdsm because this entire module has to just be
+ # run as root and there is no such feature yet in supervdsm. When such
+ # feature exists please change this.
+@@ -89,7 +88,7 @@ def _runCmd(args, hideValue=False, sync=True):
+ if i < (len(printCmd) - 1):
+ printCmd[i + 1] = "****"
+
+- return misc.execCmd(cmd, printable=printCmd, sudo=True, sync=sync)
++ return misc.execCmd(cmd, printable=printCmd, sudo=True)
+
+
+ def iface_exists(interfaceName):
+@@ -295,21 +294,12 @@ def node_login(iface, portal, targetName):
+ raise IscsiNodeError(rc, out, err)
+
+
+-def session_rescan_async():
+- proc = _runCmd(["-m", "session", "-R"], sync=False)
+-
+- def parse_result(rc, out, err):
+- if rc == 0:
+- return
+-
+- raise IscsiSessionError(rc, out, err)
+-
+- return AsyncProcessOperation(proc, parse_result)
+-
+-
+ def session_rescan():
+- aop = session_rescan_async()
+- return aop.result()
++ rc, out, err = _runCmd(["-m", "session", "-R"])
++ if rc == 0:
++ return
++
++ raise IscsiSessionError(rc, out, err)
+
+
+ def session_logout(sessionId):
+diff --git a/vdsm/storage/multipath.py b/vdsm/storage/multipath.py
+index 29851f3..1f9773c 100644
+--- a/vdsm/storage/multipath.py
++++ b/vdsm/storage/multipath.py
+@@ -105,6 +105,8 @@ def rescan():
+ # First ask iSCSI to rescan all its sessions
+ iscsi.rescan()
+
++ supervdsm.getProxy().forceScsiScan()
++
+ # Now let multipath daemon pick up new devices
+ cmd = [constants.EXT_MULTIPATH, "-r"]
+ misc.execCmd(cmd, sudo=True)
+diff --git a/vdsm/supervdsmServer b/vdsm/supervdsmServer
+index 6ad3875..7fa1c2b 100755
+--- a/vdsm/supervdsmServer
++++ b/vdsm/supervdsmServer
+@@ -56,6 +56,7 @@ from md_utils import getMdDeviceUuidMap as _getMdDeviceUuidMap
+
+ from lsblk import getLsBlk as _getLsBlk
+ from storage.multipath import getScsiSerial as _getScsiSerial
++from storage.iscsi import forceScsiScan as _forceScsiScan
+ from storage.iscsi import getDevIscsiInfo as _getdeviSCSIinfo
+ from storage.iscsi import readSessionInfo as _readSessionInfo
+ from supervdsm import _SuperVdsmManager
+@@ -148,6 +149,10 @@ class _SuperVdsm(object):
+ return _getScsiSerial(*args, **kwargs)
+
+ @logDecorator
++ def forceScsiScan(self, *args, **kwargs):
++ return _forceScsiScan(*args, **kwargs)
++
++ @logDecorator
+ def removeDeviceMapping(self, devName):
+ return _removeMapping(devName)
+
+--
+1.8.4.2
+
diff --git a/0005-Report-conflict-when-python-cpopen-is-installed.patch b/0005-Report-conflict-when-python-cpopen-is-installed.patch
new file mode 100644
index 0000000..4b64281
--- /dev/null
+++ b/0005-Report-conflict-when-python-cpopen-is-installed.patch
@@ -0,0 +1,35 @@
+From a71e5a959f0e14565e55dc3b126f0be7530e4c66 Mon Sep 17 00:00:00 2001
+From: Yaniv Bronhaim <ybronhei at redhat.com>
+Date: Thu, 23 Jan 2014 15:38:22 +0200
+Subject: [PATCH] Report conflict when python-cpopen is installed
+
+vdsm-python-cpopen-4.13.2 cannot be installed in parallel to
+python-cpopen, because the latter the user should manually take care of
+removing python-cpopen if installed.
+This patch adds a conflict report when this scenario occurs.
+
+Change-Id: I0bcdf60a696e9b203555c83bda2c7053db5c6bfe
+Signed-off-by: Yaniv Bronhaim <ybronhei at redhat.com>
+Reviewed-on: http://gerrit.ovirt.org/23632
+Reviewed-by: Dan Kenigsberg <danken at redhat.com>
+Reviewed-by: Douglas Schilling Landgraf <dougsland at redhat.com>
+---
+ vdsm.spec.in | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/vdsm.spec.in b/vdsm.spec.in
+index bec4213..c8bbf8d 100644
+--- a/vdsm.spec.in
++++ b/vdsm.spec.in
+@@ -312,7 +312,7 @@ Manager.
+ Summary: Creates a sub-process in simpler safer manner.
+
+ BuildRequires: python2-devel
+-Provides: python-cpopen = 1.2.3
++Conflicts: python-cpopen
+
+ %description python-cpopen
+ Python package for creating sub-process in simpler and safer manner by using C
+--
+1.7.1
+
diff --git a/sources b/sources
index 5c03119..89af15a 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-b84739d65cc80cd1e94cad29fff0cad4 vdsm-4.14.1.tar.gz
+bb47fc8c9413620e1227a2c28a5aba0b vdsm-4.13.3.tar.gz
diff --git a/vdsm.spec b/vdsm.spec
index 1f8a2dc..6d81baa 100644
--- a/vdsm.spec
+++ b/vdsm.spec
@@ -35,10 +35,6 @@
%global with_gluster 1
%endif
-%if ! 0%{?rhel}
-%global with_vhostmd 1
-%endif
-
%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
%global with_systemd 1
%endif
@@ -49,7 +45,7 @@
%endif
Name: %{vdsm_name}
-Version: 4.14.1
+Version: 4.13.3
Release: 2%{?dist}%{?extra_release}
Summary: Virtual Desktop Server Manager
@@ -64,26 +60,23 @@ Url: http://www.ovirt.org/wiki/Vdsm
# ./autogen.sh --system
# make VERSION={version}-{vdsm_release} dist
Source0: %{vdsm_name}-%{version}%{?vdsm_relttag}.tar.gz
-
-# ovirt-3.4 patches
-Patch0: 0001-vdsm.spec-Add-BuildRequires-to-python-argparse.patch
+# ovirt-3.3.3 patches
+Patch0: 0001-Using-old-form-of-zombiereaper.patch
+Patch1: 0002-Revert-Using-old-form-of-zombiereaper.patch
+Patch2: 0003-Revert-utils-Create-AsyncProcessOperation.patch
+Patch3: 0004-Revert-iscsi-Iscsi-rescan-cleanup.patch
+Patch4: 0005-Report-conflict-when-python-cpopen-is-installed.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: gcc
BuildRequires: python
BuildRequires: python-devel
BuildRequires: python-nose
BuildRequires: python-netaddr
-BuildRequires: rpm-build
# BuildRequires needed by the tests during the build
-BuildRequires: dosfstools
-BuildRequires: psmisc
BuildRequires: python-ethtool
-BuildRequires: python-inotify
BuildRequires: python-pthreading
-BuildRequires: python-cpopen >= 1.3
BuildRequires: libselinux-python
BuildRequires: libvirt-python
BuildRequires: genisoimage
@@ -93,7 +86,6 @@ BuildRequires: m2crypto
BuildRequires: python-dmidecode
%endif
%if 0%{?rhel} == 6
-BuildRequires: python-argparse
BuildRequires: python-ordereddict
%endif
BuildRequires: python-ethtool
@@ -115,7 +107,6 @@ BuildRequires: python-pep8
BuildRequires: systemd-units
%endif
-Requires: ethtool
Requires: which
Requires: sudo >= 1.7.3
Requires: logrotate
@@ -126,14 +117,11 @@ Requires: iproute
Requires: python-netaddr
Requires: python-inotify
Requires: python-argparse
-Requires: python-cpopen >= 1.3
Requires: python-ethtool >= 0.6-3
-Requires: %{name}-python-zombiereaper = %{version}-%{release}
Requires: rpm-python
Requires: nfs-utils
Requires: m2crypto
Requires: libguestfs-tools-c
-Requires: libnl
Requires: %{name}-xmlrpc = %{version}-%{release}
Requires: mom >= 0.3.2-3
@@ -150,24 +138,13 @@ Requires: libvirt-daemon-driver-nwfilter
Requires: libvirt-daemon-driver-qemu
%else
%if 0%{?rhel}
-Requires: libvirt >= 0.10.2-18.el6_4.15
+Requires: libvirt >= 0.10.2-18.el6_4.10
%else
Requires: libvirt >= 1.0.2-1
%endif
%endif
Requires: libvirt-python, libvirt-lock-sanlock, libvirt-client
-# iscsi-intiator versions
-%if 0%{?rhel}
-%if 0%{?rhel} >= 7
-Requires: iscsi-initiator-utils
-%else
-Requires: iscsi-initiator-utils >= 6.2.0.872-15
-%endif # rhel 7
-%else # fedora
-Requires: iscsi-initiator-utils >= 6.2.0.873-3
-%endif
-
%if 0%{?rhel}
Requires: python-ethtool >= 0.6-3
%if 0%{?rhel} >= 7
@@ -175,12 +152,13 @@ ExclusiveArch: x86_64
Requires: device-mapper-multipath
Requires: e2fsprogs
Requires: fence-agents-all
+Requires: iscsi-initiator-utils
Requires: lvm2
Requires: python
Requires: policycoreutils-python
Requires: python-pthreading >= 0.1.2
Requires: qemu-kvm
-Requires: qemu-img
+Requires: qemu-kvm-img
Requires: sanlock, sanlock-python
Requires: selinux-policy-targeted
%else
@@ -188,6 +166,7 @@ Requires: python
# Update the qemu-kvm requires when block_stream will be included
Requires: qemu-kvm >= 2:0.12.1.2-2.295.el6_3.4
Requires: qemu-img >= 2:0.12.1.2-2.295.el6_3.4
+Requires: iscsi-initiator-utils >= 6.2.0.873-3
Requires: device-mapper-multipath >= 0.4.9-52
Requires: e2fsprogs >= 1.41.12-11
Requires: fence-agents
@@ -205,11 +184,9 @@ Requires: logrotate < 3.8.0
%if 0%{?fedora} >= 19
Requires: python-pthreading >= 0.1.2
Requires: fence-agents-all
-Requires: kernel >= 3.11.3-201
%else
Requires: python-pthreading
Requires: fence-agents
-Requires: kernel >= 3.6
%endif
# Subprocess and thread bug was found on python 2.7.2
Requires: python >= 2.7.3
@@ -219,8 +196,10 @@ Requires: python-ethtool >= 0.8-1
%if 0%{?fedora} >= 18
Requires: initscripts >= 9.42.2-1
%endif
+Requires: iscsi-initiator-utils >= 6.2.0.872-14
Requires: device-mapper-multipath >= 0.4.9-18
Requires: e2fsprogs >= 1.41.14
+Requires: kernel >= 3.6
Requires: sanlock >= 2.4-2, sanlock-python
Requires: policycoreutils-python
Requires: sed >= 4.2.1-10
@@ -243,7 +222,7 @@ Requires: systemd >= 197-1.fc18.2
# GlusterFS client-side RPMs needed for Gluster SD
%if 0%{?with_gluster}
-Requires: glusterfs >= 3.4.2
+Requires: glusterfs >= 3.4.0
Requires: glusterfs-cli
Requires: glusterfs-api
Requires: glusterfs-fuse
@@ -283,6 +262,7 @@ BuildArch: noarch
Requires: %{name}-python = %{version}-%{release}
Requires: %{name}-xmlrpc = %{version}-%{release}
+Requires: %{name}-python-cpopen
%description cli
Call VDSM commands from the command line. Used for testing and debugging.
@@ -292,6 +272,7 @@ Summary: VDSM xmlrpc API
BuildArch: noarch
Requires: %{name}-python = %{version}-%{release}
+Requires: %{name}-python-cpopen
%description xmlrpc
@@ -327,15 +308,6 @@ Requires: python >= 2.6
%description yajsonrpc
A JSON RPC server and client implementation.
-%package python-zombiereaper
-Summary: Collects zombie processes automatically
-BuildArch: noarch
-
-Requires: python >= 2.6
-
-%description python-zombiereaper
-Collects zombie processes automatically so you don't have to
-
%package bootstrap
Summary: VDSM bootstrapping package
BuildArch: noarch
@@ -356,9 +328,18 @@ Requires: openssl
VDSM registration package. Used to register a Linux host to a Virtualization
Manager.
+%package python-cpopen
+Summary: Creates a sub-process in simpler safer manner.
+
+BuildRequires: python2-devel
+Conflicts: python-cpopen
+
+%description python-cpopen
+Python package for creating sub-process in simpler and safer manner by using C
+code.
+
%package python
Summary: VDSM python libraries
-Requires: %{name}-python-zombiereaper = %{version}-%{release}
%description python
Shared libraries between the various VDSM packages.
@@ -391,7 +372,6 @@ Requires: vdsm
VDSM hook used to perform consistency check on a qcow2 format disk image
using the QEMU disk image utility.
-%if 0%{?with_vhostmd}
%package hook-vhostmd
Summary: VDSM hook set for interaction with vhostmd
Requires: vhostmd
@@ -399,7 +379,6 @@ BuildArch: noarch
%description hook-vhostmd
VDSM hook to use vhostmd per VM according to Virtualization Manager requests.
-%endif
%package hook-faqemu
Summary: Fake qemu process for VDSM quality assurance
@@ -429,15 +408,6 @@ VDSM hooks which allow to disable mac spoof filtering
either on all the of the VM's interfaces or on
specific vnics.
-%package hook-extnet
-Summary: Force a vNIC to connect to a specific libvirt network
-BuildArch: noarch
-Requires: vdsm = %{version}-%{release}
-
-%description hook-extnet
-VDSM hook which allows to connect a vNIC to a libvirt network that is managed
-outside of oVirt, such as an openvswitch network.
-
%package hook-fileinject
Summary: Allow uploading file to VMs disk
BuildArch: noarch
@@ -569,21 +539,10 @@ directly to a virtual machine.
%package hook-vmfex
Summary: vmfex support for VDSM
BuildArch: noarch
-Conflicts: hook-vmfex-dev
%description hook-vmfex
Hook for vmfex.
-%package hook-vmfex-dev
-Summary: VM-FEX vNIC support for VDSM
-BuildArch: noarch
-Requires: vdsm = %{version}-%{release}
-Conflicts: hook-vmfex
-
-%description hook-vmfex-dev
-Allows to use custom device properties to connect a guest vNIC to a host
-VM-FEX Virtual Function (SR-IOV with macvtap mode).
-
%package hook-vmdisk
Summary: External disk support for VDSM
BuildArch: noarch
@@ -606,9 +565,13 @@ Gluster plugin enables VDSM to serve Gluster functionalities.
%prep
%setup -q
-
-# ovirt-3.4 patches
+# ovirt-3.3.3 patches
%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+
%if 0%{?rhel} == 6
sed -i '/ su /d' vdsm/vdsm-logrotate.conf.in
@@ -648,6 +611,8 @@ install -Dm 0755 init/systemd/systemd-vdsmd %{buildroot}/lib/systemd/systemd-vds
install -Dm 0644 init/systemd/vdsmd.service %{buildroot}%{_unitdir}/vdsmd.service
install -Dm 0644 init/systemd/supervdsmd.service %{buildroot}%{_unitdir}/supervdsmd.service
+install -Dm 0644 init/systemd/vdsm-restore-net-config.service \
+ %{buildroot}%{_unitdir}/vdsm-restore-net-config.service
install -Dm 0755 vdsm_reg/vdsm-reg.init \
%{buildroot}/lib/systemd/systemd-vdsm-reg
install -Dm 0644 vdsm_reg/vdsm-reg.service \
@@ -660,6 +625,8 @@ install -Dm 0755 init/sysvinit/vdsmd.init %{buildroot}%{_initrddir}/vdsmd
install -Dm 0755 init/sysvinit/supervdsmd.init %{buildroot}%{_initrddir}/supervdsmd
install -Dm 0755 vdsm_reg/vdsm-reg.init %{buildroot}%{_initrddir}/vdsm-reg
+install -Dm 0755 init/sysvinit/vdsm-restore-net-config.init \
+ %{buildroot}%{_initrddir}/vdsm-restore-net-config
%endif
%if 0%{?with_tmpfiles_macro}
@@ -702,6 +669,7 @@ export LC_ALL=C
/usr/sbin/useradd -r -u 36 -g %{vdsm_group} -d /var/lib/vdsm \
-s /sbin/nologin -c "Node Virtualization Manager" %{vdsm_user}
/usr/sbin/usermod -a -G %{qemu_group},%{snlk_group} %{vdsm_user}
+/usr/sbin/usermod -a -G %{qemu_group},%{vdsm_group} %{snlk_user}
%post
%{_bindir}/vdsm-tool sebool-config || :
@@ -722,20 +690,24 @@ fi
/sbin/restorecon -R /var/log/core >/dev/null 2>&1
# hack until we replace core dump with abrt
-%if ! 0%{?with_systemd}
+%if 0%{?rhel}
if [ "$1" -eq 1 ] ; then
/sbin/chkconfig --add vdsmd
/sbin/chkconfig --add supervdsmd
+ /sbin/chkconfig --add vdsm-restore-net-config
fi
%else
+%if 0%{?with_systemd}
/bin/systemctl restart systemd-modules-load.service >/dev/null 2>&1 || :
if [ "$1" -eq 1 ] ; then
/bin/systemctl enable vdsmd.service >/dev/null 2>&1 || :
/bin/systemctl enable supervdsmd.service >/dev/null 2>&1 || :
+ /bin/systemctl enable vdsm-restore-net-config.service >/dev/null 2>&1 || :
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
fi
exit 0
%endif
+%endif
%preun
if [ "$1" -eq 0 ]; then
@@ -756,13 +728,14 @@ if [ "$1" -eq 0 ]; then
/bin/sed -i -e 's/# VDSM backup//' %{_sysconfdir}/logrotate.d/libvirtd
fi
-%if ! 0%{?with_systemd}
+%if 0%{?rhel}
if [ "$1" -eq 0 ]
then
/sbin/service vdsmd stop > /dev/null 2>&1 || :
/sbin/chkconfig --del vdsmd
/sbin/service supervdsmd stop > /dev/null 2>&1 || :
/sbin/chkconfig --del supervdsmd
+ /sbin/chkconfig --del vdsm-restore-net-config
/bin/sed -i '/# VDSM section begin/,/# VDSM section end/d' \
/etc/sysctl.conf
@@ -783,10 +756,12 @@ fi
%if 0%{?with_systemd_macros}
%systemd_preun vdsmd.service
%systemd_preun supervdsmd.service
+%systemd_preun vdsm-restore-net-config.service
%else
if [ "$1" -eq 0 ]; then
/bin/systemctl --no-reload disable vdsmd.service > /dev/null 2>&1 || :
/bin/systemctl --no-reload disable supervdsmd.service > /dev/null 2>&1 || :
+ /bin/systemctl --no-reload disable vdsm-restore-net-config.service > /dev/null 2>&1 || :
/bin/systemctl stop vdsmd.service > /dev/null 2>&1 || :
/bin/systemctl stop supervdsmd.service > /dev/null 2>&1 || :
fi
@@ -798,46 +773,27 @@ exit 0
if [ "$1" -ge 1 ]; then
supervdsmd_start_required='no'
vdsmd_start_required='no'
-
- # Both vdsm and supervdsm should be managed here and must be restarted if
- # ran before (code might changed)
if %{_bindir}/vdsm-tool service-status vdsmd >/dev/null 2>&1; then
- %{_bindir}/vdsm-tool service-stop vdsmd >/dev/null 2>&1 || :
+ %{_bindir}/vdsm-tool service-stop vdsmd >/dev/null 2>&1
vdsmd_start_required='yes'
fi
if %{_bindir}/vdsm-tool service-status supervdsmd >/dev/null 2>&1; then
- %{_bindir}/vdsm-tool service-stop supervdsmd >/dev/null 2>&1 || :
+ %{_bindir}/vdsm-tool service-stop supervdsmd >/dev/null 2>&1
supervdsmd_start_required='yes'
fi
- if ! %{_bindir}/vdsm-tool is-configured --module libvirt >/dev/null 2>&1;
- then
- if ! %{_bindir}/vdsm-tool configure --module libvirt --force \
- >/dev/null 2>&1; then
- # fallback to vdsmd reconfigure api - This change may be removed
- # when vdsm won't support any downgrade\upgrade to versions that
- # don't include vdsm-tool configure api (vdsm <= 3.3)
- for f in '/lib/systemd/systemd-vdsmd' '/etc/init.d/vdsmd'; do
- if [ -f "${f}" ]; then
- "${f}" reconfigure >/dev/null 2>&1 || :
- fi
- done
- fi
- fi
+ %{_bindir}/vdsm-tool libvirt-configure >/dev/null 2>&1
if [ "${supervdsmd_start_required}" = 'yes' ]; then
- %{_bindir}/vdsm-tool service-start supervdsmd >/dev/null 2>&1 || :
+ %{_bindir}/vdsm-tool service-start supervdsmd >/dev/null 2>&1
fi
if [ "${vdsmd_start_required}" = 'yes' ]; then
- %{_bindir}/vdsm-tool service-start vdsmd >/dev/null 2>&1 || :
+ %{_bindir}/vdsm-tool service-start vdsmd >/dev/null 2>&1
fi
fi
exit 0
-%if 0%{?rhel} == 6
-# In el6, We configure libvirt to use upstart without the libvirt.rpm's
-# awareness. Thus, we must stop/restart libvirt ourselves when the
-# libvirt.rpm is removed/upgraded.
+%if 0%{?rhel}
%triggerun -- libvirt
if [ "$2" -eq "0" ]; then
/sbin/initctl stop libvirtd > /dev/null 2>&1 || :
@@ -850,7 +806,7 @@ fi
%endif
%post reg
-%if ! 0%{?with_systemd}
+%if 0%{?rhel}
if [ "$1" -eq 1 ] ; then
/sbin/chkconfig --add vdsm-reg
fi
@@ -867,7 +823,7 @@ exit 0
%endif
%preun reg
-%if ! 0%{?with_systemd}
+%if 0%{?rhel}
if [ "$1" -eq 0 ]
then
/sbin/service vdsm-reg stop > /dev/null 2>&1 || :
@@ -892,9 +848,11 @@ exit 0
/lib/systemd/systemd-vdsmd
%{_unitdir}/vdsmd.service
%{_unitdir}/supervdsmd.service
+%{_unitdir}/vdsm-restore-net-config.service
%else
%{_initrddir}/vdsmd
%{_initrddir}/supervdsmd
+%{_initrddir}/vdsm-restore-net-config
%endif
%dir %attr(-, %{vdsm_user}, %{vdsm_group}) /rhev/data-center
@@ -904,7 +862,6 @@ exit 0
%dir %{_sysconfdir}/%{vdsm_name}
%dir %{_sysconfdir}/%{vdsm_name}/mom.d
%dir %{_datadir}/%{vdsm_name}
-%dir %{_datadir}/%{vdsm_name}/netconf
%dir %{_datadir}/%{vdsm_name}/storage
%dir %{_datadir}/%{vdsm_name}/storage/imageRepository
%{_datadir}/%{vdsm_name}/alignmentScan.py*
@@ -921,7 +878,6 @@ exit 0
%{_datadir}/%{vdsm_name}/mk_sysprep_floppy
%{_datadir}/%{vdsm_name}/parted_utils.py*
%{_datadir}/%{vdsm_name}/mkimage.py*
-%{_datadir}/%{vdsm_name}/ppc64HardwareInfo.py*
%{_datadir}/%{vdsm_name}/sourceRoute.py*
%{_datadir}/%{vdsm_name}/sourceRouteThread.py*
%{_datadir}/%{vdsm_name}/supervdsm.py*
@@ -932,10 +888,9 @@ exit 0
%{_datadir}/%{vdsm_name}/vdsm-restore-net-config
%{_datadir}/%{vdsm_name}/vdsm-store-net-config
%{_datadir}/%{vdsm_name}/vm.py*
-
+%{_datadir}/%{vdsm_name}/zombieReaper.py*
%config(noreplace) %{_sysconfdir}/%{vdsm_name}/logger.conf
%config(noreplace) %{_sysconfdir}/%{vdsm_name}/svdsm.logger.conf
-%config(noreplace) %{_sysconfdir}/%{vdsm_name}/upgrade.logger.conf
%config(noreplace) %{_sysconfdir}/%{vdsm_name}/mom.conf
%config(noreplace) %{_sysconfdir}/%{vdsm_name}/mom.d/*.policy
%config(noreplace) %{_sysconfdir}/logrotate.d/vdsm
@@ -980,7 +935,6 @@ exit 0
%{_datadir}/%{vdsm_name}/storage/iscsiadm.py*
%{_datadir}/%{vdsm_name}/storage/iscsi.py*
%{_datadir}/%{vdsm_name}/storage/localFsSD.py*
-%{_datadir}/%{vdsm_name}/storage/lvm.env
%{_datadir}/%{vdsm_name}/storage/lvm.py*
%{_datadir}/%{vdsm_name}/storage/misc.py*
%{_datadir}/%{vdsm_name}/storage/mount.py*
@@ -996,7 +950,6 @@ exit 0
%{_datadir}/%{vdsm_name}/storage/sd.py*
%{_datadir}/%{vdsm_name}/storage/securable.py*
%{_datadir}/%{vdsm_name}/storage/sp.py*
-%{_datadir}/%{vdsm_name}/storage/spbackends.py*
%{_datadir}/%{vdsm_name}/storage/storageConstants.py*
%{_datadir}/%{vdsm_name}/storage/storage_exception.py*
%{_datadir}/%{vdsm_name}/storage/storage_mailbox.py*
@@ -1012,7 +965,6 @@ exit 0
%{_libexecdir}/%{vdsm_name}/safelease
%{_libexecdir}/%{vdsm_name}/spmprotect.sh
%{_libexecdir}/%{vdsm_name}/spmstop.sh
-%dir %{_libexecdir}/%{vdsm_name}/hooks
%dir %{_libexecdir}/%{vdsm_name}/hooks/before_device_create
%dir %{_libexecdir}/%{vdsm_name}/hooks/after_device_create
%dir %{_libexecdir}/%{vdsm_name}/hooks/before_device_destroy
@@ -1054,10 +1006,6 @@ exit 0
%dir %{_libexecdir}/%{vdsm_name}/hooks/after_disk_hotunplug
%dir %{_libexecdir}/%{vdsm_name}/hooks/before_vdsm_start
%dir %{_libexecdir}/%{vdsm_name}/hooks/after_vdsm_stop
-%dir %{_libexecdir}/%{vdsm_name}/hooks/before_network_setup
-%dir %{_libexecdir}/%{vdsm_name}/hooks/after_network_setup
-%dir %{_libexecdir}/%{vdsm_name}/hooks/before_set_num_of_cpus
-%dir %{_libexecdir}/%{vdsm_name}/hooks/after_set_num_of_cpus
%{_datadir}/%{vdsm_name}/addNetwork
%{_datadir}/%{vdsm_name}/configNetwork.py*
%{_datadir}/%{vdsm_name}/delNetwork
@@ -1067,7 +1015,6 @@ exit 0
%{_datadir}/%{vdsm_name}/ksm.py*
%{_datadir}/%{vdsm_name}/momIF.py*
%{_datadir}/%{vdsm_name}/netconf/__init__.py*
-%{_datadir}/%{vdsm_name}/netconf/dhclient.py*
%{_datadir}/%{vdsm_name}/netconf/ifcfg.py*
%{_datadir}/%{vdsm_name}/netconf/libvirtCfg.py*
%{_datadir}/%{vdsm_name}/netconf/iproute2.py*
@@ -1110,11 +1057,10 @@ exit 0
%config(noreplace) %{_sysconfdir}/pki/%{vdsm_name}/keys/libvirt_password
%dir %{_localstatedir}/lib/%{vdsm_name}
%dir %{_localstatedir}/lib/%{vdsm_name}/netconfback
-%dir %{_localstatedir}/lib/%{vdsm_name}/persistence
-%dir %{_localstatedir}/lib/%{vdsm_name}/upgrade
%dir %{_localstatedir}/run/%{vdsm_name}
%dir %{_localstatedir}/run/%{vdsm_name}/sourceRoutes
%dir %{_localstatedir}/run/%{vdsm_name}/trackedInterfaces
+%ghost %dir %{_localstatedir}/run/%{vdsm_name}/pools
%ghost %dir %{_localstatedir}/run/%{vdsm_name}/payload
%dir %{_localstatedir}/log/%{vdsm_name}
%dir %{_localstatedir}/log/%{vdsm_name}/backup
@@ -1125,8 +1071,6 @@ exit 0
%if !0%{?rhel}
%config(noreplace) %{_sysconfdir}/%{vdsm_name}/vdsm.conf
%endif
-%dir %{python_sitearch}/%{vdsm_name}
-%dir %{python_sitearch}/%{vdsm_name}/tool
%{python_sitearch}/%{vdsm_name}/__init__.py*
%{python_sitearch}/%{vdsm_name}/config.py*
%{python_sitearch}/%{vdsm_name}/constants.py*
@@ -1135,10 +1079,8 @@ exit 0
%{python_sitearch}/%{vdsm_name}/ipwrapper.py*
%{python_sitearch}/%{vdsm_name}/libvirtconnection.py*
%{python_sitearch}/%{vdsm_name}/netinfo.py*
-%{python_sitearch}/%{vdsm_name}/netlink.py*
%{python_sitearch}/%{vdsm_name}/qemuImg.py*
%{python_sitearch}/%{vdsm_name}/SecureXMLRPCServer.py*
-%{python_sitearch}/%{vdsm_name}/netconfpersistence.py*
%{python_sitearch}/%{vdsm_name}/utils.py*
%{python_sitearch}/%{vdsm_name}/vdscli.py*
%{python_sitearch}/%{vdsm_name}/tool/__init__.py*
@@ -1149,34 +1091,25 @@ exit 0
%endif
%{python_sitearch}/%{vdsm_name}/tool/dummybr.py*
%{python_sitearch}/%{vdsm_name}/tool/nwfilter.py*
-%{python_sitearch}/%{vdsm_name}/tool/configurator.py*
+%{python_sitearch}/%{vdsm_name}/tool/libvirt_configure.py*
%{_libexecdir}/%{vdsm_name}/libvirt_configure.sh
%{python_sitearch}/%{vdsm_name}/tool/passwd.py*
-%{python_sitearch}/%{vdsm_name}/tool/restore_nets.py*
+%{python_sitearch}/%{vdsm_name}/tool/sanlock.py*
%{python_sitearch}/%{vdsm_name}/tool/seboolsetup.py*
%{python_sitearch}/%{vdsm_name}/tool/service.py*
-%{python_sitearch}/%{vdsm_name}/tool/transient.py*
-%{python_sitearch}/%{vdsm_name}/tool/unified_persistence.py*
-%{python_sitearch}/%{vdsm_name}/tool/upgrade.py*
-%{python_sitearch}/%{vdsm_name}/tool/upgrade_300_networks.py*
%{python_sitearch}/%{vdsm_name}/tool/validate_ovirt_certs.py*
%{python_sitearch}/%{vdsm_name}/tool/vdsm-id.py*
%files tests
%doc %{_datadir}/%{vdsm_name}/tests/README
%defattr(-, root, root, -)
-%dir %{_datadir}/%{vdsm_name}/tests
-%dir %{_datadir}/%{vdsm_name}/tests/functional
%{_datadir}/%{vdsm_name}/tests/*.py*
%{_datadir}/%{vdsm_name}/tests/cpu_info.out
%{_datadir}/%{vdsm_name}/tests/caps_libvirt_intel_E5649.out
%{_datadir}/%{vdsm_name}/tests/caps_libvirt_amd_6274.out
%{_datadir}/%{vdsm_name}/tests/caps_libvirt_intel_E31220.out
-%{_datadir}/%{vdsm_name}/tests/caps_lscpu_ppc64_1_4_4.out
-%{_datadir}/%{vdsm_name}/tests/caps_lscpu_ppc64_2_4_8.out
%{_datadir}/%{vdsm_name}/tests/glob_1c60971a-8647-44ac-ae33-6520887f8843.out
%{_datadir}/%{vdsm_name}/tests/lvs_3386c6f2-926f-42c4-839c-38287fac8998.out
-%{_datadir}/%{vdsm_name}/tests/mem_info.out
%{_datadir}/%{vdsm_name}/tests/netmaskconversions
%{_datadir}/%{vdsm_name}/tests/run_tests.sh
%{_datadir}/%{vdsm_name}/tests/tc_filter_show.out
@@ -1184,7 +1117,6 @@ exit 0
%{_datadir}/%{vdsm_name}/tests/glusterVolumeProfileInfoNfs.xml
%{_datadir}/%{vdsm_name}/tests/glusterVolumeRebalanceStatus.xml
%{_datadir}/%{vdsm_name}/tests/glusterVolumeRemoveBricksStatus.xml
-%{_datadir}/%{vdsm_name}/tests/glusterVolumeTasks.xml
%{_datadir}/%{vdsm_name}/tests/functional/*.py*
%{_datadir}/%{vdsm_name}/tests/functional/*.policy
@@ -1192,21 +1124,16 @@ exit 0
%defattr(-, root, root, -)
%{_sysconfdir}/sudoers.d/50_vdsm_hook_openstacknet
%{_libexecdir}/%{vdsm_name}/hooks/after_device_create/50_openstacknet
-%{_libexecdir}/%{vdsm_name}/hooks/after_device_create/openstacknet_utils.py*
-%{_libexecdir}/%{vdsm_name}/hooks/after_device_destroy/50_openstacknet
-%{_libexecdir}/%{vdsm_name}/hooks/after_device_destroy/openstacknet_utils.py*
+%{_libexecdir}/%{vdsm_name}/hooks/after_device_create/openstacknet_consts.py*
%{_libexecdir}/%{vdsm_name}/hooks/after_device_migrate_destination/50_openstacknet
-%{_libexecdir}/%{vdsm_name}/hooks/after_device_migrate_destination/openstacknet_utils.py*
+%{_libexecdir}/%{vdsm_name}/hooks/after_device_migrate_destination/openstacknet_consts.py*
%{_libexecdir}/%{vdsm_name}/hooks/after_nic_hotplug/50_openstacknet
-%{_libexecdir}/%{vdsm_name}/hooks/after_nic_hotplug/openstacknet_utils.py*
-%{_libexecdir}/%{vdsm_name}/hooks/after_nic_hotunplug/50_openstacknet
-%{_libexecdir}/%{vdsm_name}/hooks/after_nic_hotunplug/openstacknet_utils.py*
+%{_libexecdir}/%{vdsm_name}/hooks/after_nic_hotplug/openstacknet_consts.py*
%{_libexecdir}/%{vdsm_name}/hooks/before_device_create/50_openstacknet
-%{_libexecdir}/%{vdsm_name}/hooks/before_device_create/openstacknet_utils.py*
+%{_libexecdir}/%{vdsm_name}/hooks/before_device_create/openstacknet_consts.py*
%{_libexecdir}/%{vdsm_name}/hooks/before_nic_hotplug/50_openstacknet
-%{_libexecdir}/%{vdsm_name}/hooks/before_nic_hotplug/openstacknet_utils.py*
+%{_libexecdir}/%{vdsm_name}/hooks/before_nic_hotplug/openstacknet_consts.py*
-%if 0%{?with_vhostmd}
%files hook-vhostmd
%defattr(-, root, root, -)
%doc COPYING
@@ -1215,13 +1142,6 @@ exit 0
%{_libexecdir}/%{vdsm_name}/hooks/before_vm_migrate_destination/50_vhostmd
%{_libexecdir}/%{vdsm_name}/hooks/before_vm_dehibernate/50_vhostmd
%{_libexecdir}/%{vdsm_name}/hooks/after_vm_destroy/50_vhostmd
-%else
-%exclude %{_sysconfdir}/sudoers.d/50_vdsm_hook_vhostmd
-%exclude %{_libexecdir}/%{vdsm_name}/hooks/before_vm_start/50_vhostmd
-%exclude %{_libexecdir}/%{vdsm_name}/hooks/before_vm_migrate_destination/50_vhostmd
-%exclude %{_libexecdir}/%{vdsm_name}/hooks/before_vm_dehibernate/50_vhostmd
-%exclude %{_libexecdir}/%{vdsm_name}/hooks/after_vm_destroy/50_vhostmd
-%endif
%files hook-qemucmdline
%defattr(-, root, root, -)
@@ -1274,11 +1194,6 @@ exit 0
%{_libexecdir}/%{vdsm_name}/hooks/before_device_create/50_macspoof
%{_libexecdir}/%{vdsm_name}/hooks/before_nic_hotplug/50_macspoof
-%files hook-extnet
-%defattr(-, root, root, -)
-%{_libexecdir}/%{vdsm_name}/hooks/before_device_create/50_extnet
-%{_libexecdir}/%{vdsm_name}/hooks/before_nic_hotplug/50_extnet
-
%files hook-nestedvt
%defattr(-, root, root, -)
%{_sysconfdir}/modprobe.d/vdsm-nestedvt.conf
@@ -1327,12 +1242,6 @@ exit 0
%defattr(-, root, root, -)
%{_libexecdir}/%{vdsm_name}/hooks/before_vm_migrate_destination/50_vmfex
%{_libexecdir}/%{vdsm_name}/hooks/before_vm_start/50_vmfex
-
-%files hook-vmfex-dev
-%defattr(-, root, root, -)
-%{_libexecdir}/%{vdsm_name}/hooks/before_device_create/50_vmfex
-%{_libexecdir}/%{vdsm_name}/hooks/before_device_migrate_destination/50_vmfex
-%{_libexecdir}/%{vdsm_name}/hooks/before_nic_hotplug/50_vmfex
%endif
%files debug-plugin
@@ -1351,7 +1260,6 @@ exit 0
%files xmlrpc
%defattr(-, root, root, -)
-%dir %{_datadir}/%{vdsm_name}
%{_datadir}/%{vdsm_name}/BindingXMLRPC.py*
%files api
@@ -1364,15 +1272,11 @@ exit 0
%{_datadir}/%{vdsm_name}/Bridge.py*
%files yajsonrpc
-%dir %{python_sitelib}/yajsonrpc
%{python_sitelib}/yajsonrpc/__init__.py*
%{python_sitelib}/yajsonrpc/asyncoreReactor.py*
%{python_sitelib}/yajsonrpc/protonReactor.py*
%{python_sitelib}/yajsonrpc/client.py*
-%files python-zombiereaper
-%{python_sitelib}/zombiereaper/__init__.py*
-
%files bootstrap
%defattr(-, root, root, -)
%doc COPYING
@@ -1426,18 +1330,15 @@ exit 0
%{_datadir}/%{vdsm_name}/gluster/vdsmapi-gluster-schema.json
%{_datadir}/%{vdsm_name}/gluster/hooks.py*
%{_datadir}/%{vdsm_name}/gluster/services.py*
-%{_datadir}/%{vdsm_name}/gluster/tasks.py*
%endif
-%changelog
-* Tue Jan 21 2014 Douglas Schilling Landgraf <dougsland at redhat.com> - 4.14.1-2
-- vdsm.spec: Add BuildRequires to python-argparse
-
-* Mon Jan 20 2014 Douglas Schilling Landgraf <dougsland at redhat.com> - 4.14.1-1
-- Rebuild 4.14.1 from ovirt-3.4
+%files python-cpopen
+%{python_sitearch}/cpopen/__init__.py*
+%attr(755, root, root) %{python_sitearch}/cpopen/cpopen.so*
-* Mon Jan 20 2014 Douglas Schilling Landgraf <dougsland at redhat.com> - 4.14.1-0
-- Build 4.14.1-0
+%changelog
+* Thu Jan 23 2014 Douglas Schilling Landgraf <dougsland at redhat.com> - 4.13.3-2
+- Report conflict when python-cpopen is installed
* Mon Jan 13 2014 Yaniv Bronhaim <ybronhei at redhat.com> - 4.13.3-1
- Reverting iscsi changes that caused a regression by importing
More information about the scm-commits
mailing list