Change in vdsm[master]: WIP: DON'T MERGE
by automation@ovirt.org
automation(a)ovirt.org has posted comments on this change.
Change subject: WIP: DON'T MERGE
......................................................................
Patch Set 2:
* Update tracker: IGNORE, no Bug-Url found
* Check Bug-Url::WARN, no bug url found, make sure header matches 'Bug-Url: ' and is a valid url.
* Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
--
To view, visit https://gerrit.ovirt.org/48151
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ic14ae80c9752574d5895aae39b4809923ec8188f
Gerrit-PatchSet: 2
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani(a)redhat.com>
Gerrit-Reviewer: automation(a)ovirt.org
Gerrit-HasComments: No
8 years, 7 months
Change in vdsm[master]: WIP: DON'T MERGE
by automation@ovirt.org
automation(a)ovirt.org has posted comments on this change.
Change subject: WIP: DON'T MERGE
......................................................................
Patch Set 1:
* Update tracker: IGNORE, no Bug-Url found
* Check Bug-Url::WARN, no bug url found, make sure header matches 'Bug-Url: ' and is a valid url.
* Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
--
To view, visit https://gerrit.ovirt.org/48151
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ic14ae80c9752574d5895aae39b4809923ec8188f
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani(a)redhat.com>
Gerrit-Reviewer: automation(a)ovirt.org
Gerrit-HasComments: No
8 years, 7 months
Change in vdsm[master]: WIP
by fromani@redhat.com
Francesco Romani has uploaded a new change for review.
Change subject: WIP
......................................................................
WIP
Change-Id: I39c2e6e4bca286a513992b7231f1356e8dd871a1
Signed-off-by: Francesco Romani <fromani(a)redhat.com>
---
M vdsm/virt/sampling.py
1 file changed, 47 insertions(+), 37 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/31/40431/1
diff --git a/vdsm/virt/sampling.py b/vdsm/virt/sampling.py
index 45afdfd..eec5ae5 100644
--- a/vdsm/virt/sampling.py
+++ b/vdsm/virt/sampling.py
@@ -551,51 +551,30 @@
return doms
-class HostStatsThread(threading.Thread):
- """
- A thread that periodically samples host statistics.
- """
- _CONNLOG = logging.getLogger('connectivity')
+class HostSampler(object):
+ _connlog = logging.getlogger('connectivity')
def __init__(self, log):
- self.startTime = time.time()
-
- threading.Thread.__init__(self)
- self.daemon = True
self._log = log
- self._stopEvent = threading.Event()
+ self._start_time = time.time()
self._samples = SampleWindow(size=5)
self._pid = os.getpid()
self._ncpus = max(os.sysconf('SC_NPROCESSORS_ONLN'), 1)
- self._sampleInterval = \
- config.getint('vars', 'host_sample_stats_interval')
+ self._sample_interval = config.getint(
+ 'vars', 'host_sample_stats_interval')
- def stop(self):
- self._stopEvent.set()
-
- def run(self):
- try:
- # wait a bit before starting to sample
- time.sleep(self._sampleInterval)
- while not self._stopEvent.isSet():
- try:
- sample = HostSample(self._pid)
- self._samples.append(sample)
- prev, last = self._samples.last_pair()
- if prev is None:
- self._CONNLOG.debug('%s', sample.to_connlog())
- else:
- diff = sample.connlog_diff(prev)
- if diff:
- self._CONNLOG.debug('%s', diff)
- except TimeoutError:
- self._log.exception("Timeout while sampling stats")
- self._stopEvent.wait(self._sampleInterval)
- except:
- if not self._stopEvent.isSet():
- self._log.exception("Error while sampling stats")
+ def __call__(self):
+ sample = HostSample(self._pid)
+ self._samples.append(sample)
+ prev, last = self._samples.last_pair()
+ if prev is None:
+ self._CONNLOG.debug('%s', sample.to_connlog())
+ else:
+ diff = sample.connlog_diff(prev)
+ if diff:
+ self._CONNLOG.debug('%s', diff)
@utils.memoized
def _boot_time(self):
@@ -625,7 +604,7 @@
hs0, hs1, _ = self._samples.stats()
interval = hs1.timestamp - hs0.timestamp
- stats.update(self._get_interfaces_stats(hs0, hs1, interval))
+ stats.update(_get_interfaces_stats(hs0, hs1, interval))
jiffies = (hs1.pidcpu.user - hs0.pidcpu.user) % (2 ** 32)
stats['cpuUserVdsmd'] = jiffies / interval
@@ -655,6 +634,37 @@
return stats
+
+class HostStatsThread(threading.Thread):
+ """
+ A thread that periodically samples host statistics.
+ """
+ _connlog = logging.getlogger('connectivity')
+
+ def __init__(self, log):
+ threading.Thread.__init__(self)
+ self._sampler = HostSampler(log)
+ self.daemon = True
+ self._stopEvent = threading.Event()
+
+ def stop(self):
+ self._stopEvent.set()
+
+ def run(self):
+ try:
+ # wait a bit before starting to sample
+ time.sleep(self._sampleInterval)
+ while not self._stopEvent.isSet():
+ try:
+ self._sampler()
+ except TimeoutError:
+ self._log.exception("Timeout while sampling stats")
+ self._stopEvent.wait(self._sampleInterval)
+ except:
+ if not self._stopEvent.isSet():
+ self._log.exception("Error while sampling stats")
+
+
def _get_cpu_core_stats(hs0, hs1):
"""
:returns: a dict that with the following formats:
--
To view, visit https://gerrit.ovirt.org/40431
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I39c2e6e4bca286a513992b7231f1356e8dd871a1
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani(a)redhat.com>
8 years, 7 months
Change in vdsm[master]: utils: Add @throttle decorator
by mbetak@redhat.com
Martin Betak has uploaded a new change for review.
Change subject: utils: Add @throttle decorator
......................................................................
utils: Add @throttle decorator
Added decorator for API methods that need to limit their maximum number of
concurrent operations.
The decorator can be configured for:
* Blocking operations:
where the request waits to obtain specified semaphore, operation proceeds and
the semaphore is released
* Non-blocking operations:
where the request returns specified error when semaphore cannot be obtained
without blocking and in case it is indeed obtained, it has to be released
manually afterwareds
Needed for subsequent migration enhancements.
Wiki: http://www.ovirt.org/Features/Migration_Enhancements
Change-Id: Iab4cf387f77a9b720afb7794e27ed54efa0d3e3c
Signed-off-by: Martin Betak <mbetak(a)redhat.com>
---
M vdsm/virt/utils.py
1 file changed, 45 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/87/47087/1
diff --git a/vdsm/virt/utils.py b/vdsm/virt/utils.py
index 55a60c6..6bd7afa 100644
--- a/vdsm/virt/utils.py
+++ b/vdsm/virt/utils.py
@@ -21,10 +21,12 @@
"""
shared utilities and common code for the virt package
"""
+from functools import wraps
import os.path
import threading
+from vdsm import response
from vdsm.utils import monotonic_time, rmFile
@@ -117,3 +119,46 @@
if os.path.islink(sock):
rmFile(os.path.realpath(sock))
rmFile(sock)
+
+
+def throttle(semaphore, err, block):
+ """
+ Helper decorator for API methods that should have limited number
+ of concurrent executions.
+
+ When block=True we will wait to obtain the semaphore and
+ release it after wrapped method execution.
+
+ When block=False we won't wait to obtain the semaphore and
+ in case this fails, will return the specified error. If the execution of
+ wrapped method succeeds, it is the responsibility of called code to
+ release the semaphore (i.e. method is assumed to be async)
+
+ :param semaphore: synchronisation mechanism to use for throttling
+ :param err: error name to return in case of full capacity
+ (only applicable when block=False)
+ :param block: mode of operation
+ :return:
+ """
+
+ def decorator(f):
+ @wraps(f)
+ def wrapper(*args, **kwargs):
+ acquired = semaphore.acquire(block)
+ if not acquired:
+ return response.error(err)
+
+ success = True
+ try:
+ result = f(*args, **kwargs)
+ success = not response.is_error(result)
+ except Exception:
+ success = False
+ raise
+ finally:
+ if not success or block:
+ semaphore.release()
+
+ return wrapper
+
+ return decorator
--
To view, visit https://gerrit.ovirt.org/47087
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iab4cf387f77a9b720afb7794e27ed54efa0d3e3c
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Martin Betak <mbetak(a)redhat.com>
8 years, 7 months
Change in vdsm[master]: migration: Add retry logic for incoming limit
by automation@ovirt.org
automation(a)ovirt.org has posted comments on this change.
Change subject: migration: Add retry logic for incoming limit
......................................................................
Patch Set 15:
* Update tracker: IGNORE, no Bug-Url found
* Check Bug-Url::WARN, no bug url found, make sure header matches 'Bug-Url: ' and is a valid url.
* Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
--
To view, visit https://gerrit.ovirt.org/46971
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Icabe79dfccb61ce43489a9a242a5390e73979649
Gerrit-PatchSet: 15
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Martin Betak <mbetak(a)redhat.com>
Gerrit-Reviewer: Francesco Romani <fromani(a)redhat.com>
Gerrit-Reviewer: Jenkins CI
Gerrit-Reviewer: Martin Betak <mbetak(a)redhat.com>
Gerrit-Reviewer: Michal Skrivanek <mskrivan(a)redhat.com>
Gerrit-Reviewer: Tomas Jelinek <tjelinek(a)redhat.com>
Gerrit-Reviewer: automation(a)ovirt.org
Gerrit-HasComments: No
8 years, 7 months
Change in vdsm[master]: migration: Add incoming migration semaphore
by automation@ovirt.org
automation(a)ovirt.org has posted comments on this change.
Change subject: migration: Add incoming migration semaphore
......................................................................
Patch Set 19:
* Update tracker: IGNORE, no Bug-Url found
* Check Bug-Url::WARN, no bug url found, make sure header matches 'Bug-Url: ' and is a valid url.
* Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
--
To view, visit https://gerrit.ovirt.org/45954
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I8952f732033ed160292b11fbc0c4deac099b2b3e
Gerrit-PatchSet: 19
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Martin Betak <mbetak(a)redhat.com>
Gerrit-Reviewer: Francesco Romani <fromani(a)redhat.com>
Gerrit-Reviewer: Jenkins CI
Gerrit-Reviewer: Martin Betak <mbetak(a)redhat.com>
Gerrit-Reviewer: Martin Polednik <mpolednik(a)redhat.com>
Gerrit-Reviewer: Michal Skrivanek <michal.skrivanek(a)redhat.com>
Gerrit-Reviewer: Michal Skrivanek <mskrivan(a)redhat.com>
Gerrit-Reviewer: Tomas Jelinek <tjelinek(a)redhat.com>
Gerrit-Reviewer: Vinzenz Feenstra <vfeenstr(a)redhat.com>
Gerrit-Reviewer: automation(a)ovirt.org
Gerrit-HasComments: No
8 years, 7 months
Change in vdsm[master]: sampling: remove HostStatsThread.get()
by fromani@redhat.com
Francesco Romani has uploaded a new change for review.
Change subject: sampling: remove HostStatsThread.get()
......................................................................
sampling: remove HostStatsThread.get()
Remove the get() operation of HostStatsThread,
decouple sample storage and stats production,
Change-Id: I80d919b0adb48a40d41f387543f14be265610405
Signed-off-by: Francesco Romani <fromani(a)redhat.com>
---
M tests/samplingTests.py
M vdsm/API.py
M vdsm/clientIF.py
M vdsm/virt/sampling.py
4 files changed, 22 insertions(+), 16 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/36/42036/1
diff --git a/tests/samplingTests.py b/tests/samplingTests.py
index ab85834..0b0bd2b 100644
--- a/tests/samplingTests.py
+++ b/tests/samplingTests.py
@@ -262,11 +262,13 @@
'rxRate': 0.0,
'txRate': 0.0,
}
- self._hs = sampling.HostStatsThread(self.log)
- self.assertEquals(self._hs.get(), expected)
+ self.assertEquals(hoststats.produce(None, None), expected)
def testSamplesWraparound(self):
- NUM = sampling.HostStatsThread.AVERAGING_WINDOW + 1
+ NUM = sampling.HOST_STATS_AVERAGING_WINDOW + 1
+
+ samples = sampling.SampleWindow(
+ sampling.HOST_STATS_AVERAGING_WINDOW)
class FakeEvent(object):
def __init__(self, *args):
@@ -299,16 +301,16 @@
pass
with MonkeyPatchScope([(sampling, 'HostSample', FakeHostSample)]):
- self._hs = sampling.HostStatsThread(self.log)
+ self._hs = sampling.HostStatsThread(self.log, samples)
self._hs._sampleInterval = 0
# we cannot monkey patch, it will interfer on threading internals
self._hs._stopEvent = FakeEvent()
self._hs.start()
self._hs.join()
- first, last, _ = self._hs._samples.stats()
+ first, last, _ = samples.stats()
self.assertEqual(first.id,
FakeHostSample.counter -
- sampling.HostStatsThread.AVERAGING_WINDOW)
+ sampling.HOST_STATS_AVERAGING_WINDOW)
self.assertEqual(last.id,
FakeHostSample.counter - 1)
diff --git a/vdsm/API.py b/vdsm/API.py
index 397f87e..e05a939 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -43,6 +43,8 @@
import storage.volume
import storage.sd
import storage.image
+from virt import hoststats
+from virt import sampling
from virt import vmstatus
from virt.vmdevices import graphics
from virt.vmdevices import hwclass
@@ -1318,7 +1320,8 @@
hooks.before_get_stats()
stats = {}
decStats = {'elapsedTime': self._cif.elapsed_time}
- decStats.update(self._cif._hostStats.get())
+ first_sample, last_sample, _ = sampling.host_samples.stats()
+ decStats.update(hoststats.produce(first_sample, last_sample))
if self._cif.irs:
decStats['storageDomains'] = self._cif.irs.repoStats()
diff --git a/vdsm/clientIF.py b/vdsm/clientIF.py
index c8ef6f6..6cd5e7f 100644
--- a/vdsm/clientIF.py
+++ b/vdsm/clientIF.py
@@ -94,7 +94,8 @@
self.gluster = None
try:
self.vmContainer = {}
- self._hostStats = sampling.HostStatsThread(log=log)
+ self._hostStats = sampling.HostStatsThread(
+ log, sampling.host_samples)
self._hostStats.start()
self._startTime = time.time()
self.lastRemoteAccess = 0
diff --git a/vdsm/virt/sampling.py b/vdsm/virt/sampling.py
index 401bae9..40cb3ee 100644
--- a/vdsm/virt/sampling.py
+++ b/vdsm/virt/sampling.py
@@ -37,7 +37,6 @@
from vdsm.config import config
from .utils import ExpiringCache
-from . import hoststats
import caps
@@ -524,19 +523,24 @@
return doms
+HOST_STATS_AVERAGING_WINDOW = 5
+
+
+host_samples = SampleWindow(size=HOST_STATS_AVERAGING_WINDOW)
+
+
class HostStatsThread(threading.Thread):
"""
A thread that periodically samples host statistics.
"""
- AVERAGING_WINDOW = 5
_CONNLOG = logging.getLogger('connectivity')
- def __init__(self, log):
+ def __init__(self, log, samples):
threading.Thread.__init__(self)
self.daemon = True
self._log = log
self._stopEvent = threading.Event()
- self._samples = SampleWindow(size=self.AVERAGING_WINDOW)
+ self._samples = samples
self._pid = os.getpid()
self._ncpus = max(os.sysconf('SC_NPROCESSORS_ONLN'), 1)
@@ -569,10 +573,6 @@
except:
if not self._stopEvent.isSet():
self._log.exception("Error while sampling stats")
-
- def get(self):
- first_sample, last_sample, _ = self._samples.stats()
- return hoststats.produce(first_sample, last_sample)
def _getLinkSpeed(dev):
--
To view, visit https://gerrit.ovirt.org/42036
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I80d919b0adb48a40d41f387543f14be265610405
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani(a)redhat.com>
8 years, 7 months
Change in vdsm[ovirt-3.6]: tests: monkey patch architecture if unsupported
by ybronhei@redhat.com
Hello Dan Kenigsberg, Francesco Romani,
I'd like you to do a code review. Please visit
https://gerrit.ovirt.org/48086
to review the following change.
Change subject: tests: monkey patch architecture if unsupported
......................................................................
tests: monkey patch architecture if unsupported
Following the effort to make vdsm no-arch dependent,
some tests fails while running on unsupported platforms.
This patch monkey-patches the tests, reporting a fake arch
(x86_64) if code is running on unsupported arch;
otherwise, the real arch is used, as before.
Change-Id: I2b7136e0269f39c8295714dee0be9604d7e2019c
Signed-off-by: Francesco Romani <fromani(a)redhat.com>
Reviewed-on: https://gerrit.ovirt.org/48012
Continuous-Integration: Jenkins CI
Reviewed-by: Yaniv Bronhaim <ybronhei(a)redhat.com>
Tested-by: Yaniv Bronhaim <ybronhei(a)redhat.com>
Reviewed-by: Dan Kenigsberg <danken(a)redhat.com>
---
M tests/testlib.py
1 file changed, 28 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/86/48086/1
diff --git a/tests/testlib.py b/tests/testlib.py
index 4958d01..175901d 100644
--- a/tests/testlib.py
+++ b/tests/testlib.py
@@ -24,6 +24,7 @@
import logging
import os
import pickle
+import platform
import unittest
from functools import wraps
import shutil
@@ -39,6 +40,7 @@
import vdsm
+from monkeypatch import Patch
from testValidation import SlowTestsPlugin, StressTestsPlugin
# /tmp may use tempfs filesystem, not suitable for some of the test assuming a
@@ -46,6 +48,9 @@
TEMPDIR = '/var/tmp'
PERMUTATION_ATTR = "_permutations_"
+
+_ARCH_REAL = platform.machine()
+_ARCH_FAKE = 'x86_64'
def dummyTextGenerator(size):
@@ -153,12 +158,35 @@
f.truncate(size)
+def _vdsm_machine():
+ return (
+ _ARCH_REAL if _ARCH_REAL in (
+ # FIXME: this duplicates caps.Architecture, but
+ # we cannot import caps.py in this module.
+ 'x86_64', 'ppc64', 'ppc64le'
+ ) else _ARCH_FAKE
+ )
+
+
class VdsmTestCase(unittest.TestCase):
+
+ _patch_arch = Patch([
+ (platform, "machine", _vdsm_machine),
+ ])
+
def __init__(self, *args, **kwargs):
unittest.TestCase.__init__(self, *args, **kwargs)
self.log = logging.getLogger(self.__class__.__name__)
self.maxDiff = None # disable truncating diff in assert error messages
+ @classmethod
+ def setUpClass(cls):
+ cls._patch_arch.apply()
+
+ @classmethod
+ def tearDownClass(cls):
+ cls._patch_arch.revert()
+
def retryAssert(self, *args, **kwargs):
'''Keep retrying an assertion if AssertionError is raised.
See function utils.retry for the meaning of the arguments.
--
To view, visit https://gerrit.ovirt.org/48086
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2b7136e0269f39c8295714dee0be9604d7e2019c
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: ovirt-3.6
Gerrit-Owner: Yaniv Bronhaim <ybronhei(a)redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Francesco Romani <fromani(a)redhat.com>
8 years, 7 months
Change in vdsm[master]: init: configure multipath on upgrade from ovirt-3.3 and 3.4
by ykaplan@redhat.com
Yeela Kaplan has uploaded a new change for review.
Change subject: init: configure multipath on upgrade from ovirt-3.3 and 3.4
......................................................................
init: configure multipath on upgrade from ovirt-3.3 and 3.4
multipath configurator was added to vdsm-tool in ovirt-3.6.
In case we upgrade from ovirt-3.3 and ovirt-3.4 we now run configure
of module multipath in init script (in addition to running it
for upgrade from ovirt-3.5).
Change-Id: If307e37397adf99e8a2c3508c8f953507db3f37b
Signed-off-by: Yeela Kaplan <ykaplan(a)redhat.com>
---
M init/vdsmd_init_common.sh.in
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/06/48106/1
diff --git a/init/vdsmd_init_common.sh.in b/init/vdsmd_init_common.sh.in
index 8dccec4..c1961f3 100644
--- a/init/vdsmd_init_common.sh.in
+++ b/init/vdsmd_init_common.sh.in
@@ -259,7 +259,7 @@
# by running manual configure command
"$VDSM_TOOL" configure --force
ret=$?
- elif grep -q '^vdsm-4\.16\.' "${upgraded_ver_file}"; then
+ elif grep -qE '^vdsm-4\.(13|14|16)\.' "${upgraded_ver_file}"; then
# REQUIRED_FOR upgrade from vdsm-4.16.z
"$VDSM_TOOL" configure --module multipath
ret=$?
--
To view, visit https://gerrit.ovirt.org/48106
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If307e37397adf99e8a2c3508c8f953507db3f37b
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Yeela Kaplan <ykaplan(a)redhat.com>
8 years, 7 months
Change in vdsm[master]: Introduce VolumeArtifacts
by automation@ovirt.org
automation(a)ovirt.org has posted comments on this change.
Change subject: Introduce VolumeArtifacts
......................................................................
Patch Set 1:
* Update tracker: IGNORE, no Bug-Url found
* Check Bug-Url::WARN, no bug url found, make sure header matches 'Bug-Url: ' and is a valid url.
* Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
--
To view, visit https://gerrit.ovirt.org/48097
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I352423e39a899b9b83ccf3b8f6c17ec433e9c353
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Adam Litke <alitke(a)redhat.com>
Gerrit-Reviewer: automation(a)ovirt.org
Gerrit-HasComments: No
8 years, 7 months