Change in vdsm[master]: vdsmd: do not swallow libvirt error
by Dan Kenigsberg
Dan Kenigsberg has uploaded a new change for review.
Change subject: vdsmd: do not swallow libvirt error
......................................................................
vdsmd: do not swallow libvirt error
Recently I've seen multiple cases of vdsm not starting up with a vague
error "Failed to define network filters on libvirt", when the underlying
issue was that libvirt has crashed.
It's better to have a line or two of log noise, in order to see that
libvirt could not have been reached.
Change-Id: I6a91061f52ec4eff24dd1e10f525fd3fed9185ef
Signed-off-by: Dan Kenigsberg <danken(a)redhat.com>
---
M vdsm/vdsmd.init.in
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/09/13909/1
diff --git a/vdsm/vdsmd.init.in b/vdsm/vdsmd.init.in
index dd1d65b..ba98e53 100755
--- a/vdsm/vdsmd.init.in
+++ b/vdsm/vdsmd.init.in
@@ -474,7 +474,7 @@
return $ret_val
fi
- python @VDSMDIR(a)/nwfilter.pyc > /dev/null 2>&1
+ python @VDSMDIR(a)/nwfilter.pyc
ret_val=$?
if [ $ret_val -ne 0 ]
then
--
To view, visit http://gerrit.ovirt.org/13909
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6a91061f52ec4eff24dd1e10f525fd3fed9185ef
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Dan Kenigsberg <danken(a)redhat.com>
11 years, 1 month
Change in vdsm[master]: sampling: a quick fix to make vdsm run again
by Dan Kenigsberg
Dan Kenigsberg has uploaded a new change for review.
Change subject: sampling: a quick fix to make vdsm run again
......................................................................
sampling: a quick fix to make vdsm run again
commit c506391442bc was merged too quickly, leaving a process that fails
to start due to
AttributeError: 'HostStatsThread' object has no a ttribute 'nics'
Change-Id: Idc993a6b1284345805455a63e3926bc2893d5874
Signed-off-by: Dan Kenigsberg <danken(a)redhat.com>
---
M vdsm/sampling.py
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/02/13902/1
diff --git a/vdsm/sampling.py b/vdsm/sampling.py
index acc2217..df03fd7 100644
--- a/vdsm/sampling.py
+++ b/vdsm/sampling.py
@@ -504,7 +504,7 @@
from vdsm.netinfo import speed as nicspeed
i = 0
- for ifid in self.nics:
+ for ifid in self._ifids:
if (hs0.interfaces[ifid].operstate !=
hs1.interfaces[ifid].operstate):
self._ifrates[i] = nicspeed(ifid)
--
To view, visit http://gerrit.ovirt.org/13902
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idc993a6b1284345805455a63e3926bc2893d5874
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Dan Kenigsberg <danken(a)redhat.com>
11 years, 1 month
Change in vdsm[master]: Separate sampling code from vdsm.utils
by wudxw@linux.vnet.ibm.com
Mark Wu has posted comments on this change.
Change subject: Separate sampling code from vdsm.utils
......................................................................
Patch Set 3:
Dan,
I had seen the long discussion about moving sampling function out of vdsm before, but didn't know Yaniv had taken this task. Hope it will not cause Yaniv waste his effort because of this out-of-sync.
Actually, I think this is just the first step to improve the sampling. In future we could separate vm stats from libvirtvm, and move host stats code from the sampling base infrastructure.
--
To view, visit http://gerrit.ovirt.org/13838
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I1de4c81b3cf202f9f548a59b86ef0c8a97c2af19
Gerrit-PatchSet: 3
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Gerrit-Reviewer: Yaniv Bronhaim <ybronhei(a)redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
11 years, 1 month
Change in vdsm[master]: NetReload: Moved addNetwork logic to the configurator
by asegurap@redhat.com
Antoni Segura Puimedon has uploaded a new change for review.
Change subject: NetReload: Moved addNetwork logic to the configurator
......................................................................
NetReload: Moved addNetwork logic to the configurator
This change starts moving the logic of configNetwork API endpoints
towards the configurators.
configureBridge, configureVlan, configureBond and configureNic
after this patch have to take care of the underlying devices
explicitly in the configurator module. However, the underlying
device handling will be abstracted to the network models in a
future patch. Thus, the code of configureBond for IfcfgConfigurator
is gonna be something like:
self.configWriter.addBonding(params)
for slave in bond.slaves:
slave.configure(params)
Change-Id: I877eddc07a17f0bdd376df7bab8b19ffe52f72ba
Signed-off-by: Antoni S. Puimedon <asegurap(a)redhat.com>
---
M vdsm/configNetwork.py
M vdsm/ifcfgConfigurator.py
2 files changed, 120 insertions(+), 73 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/68/13268/1
diff --git a/vdsm/configNetwork.py b/vdsm/configNetwork.py
index ff18629..0defdd4 100755
--- a/vdsm/configNetwork.py
+++ b/vdsm/configNetwork.py
@@ -38,6 +38,7 @@
from ifcfgConfigurator import ifup
from ifcfgConfigurator import ifdown
from ifcfgConfigurator import ConfigWriter
+from ifcfgConfigurator import IfcfgConfigurator
CONNECTIVITY_TIMEOUT_DEFAULT = 4
MAX_VLAN_ID = 4094
@@ -275,7 +276,6 @@
raise ConfigNetworkError(ne.ERR_BAD_PARAMS,
'Both PREFIX and NETMASK supplied')
- # Validation
if not utils.tobool(force):
logging.debug('validating network...')
_addNetworkValidation(_netinfo, network=network, vlan=vlan,
@@ -291,14 +291,10 @@
if configWriter is None:
configWriter = ConfigWriter()
+ configurator = IfcfgConfigurator(configWriter)
- prevmtu = None
- if mtu:
- prevmtu = configWriter.getMaxMtu(nics, mtu)
-
- nic = nics[0] if nics else None
- iface = bonding or nic
- blockingDhcp = utils.tobool(options.get('blockingdhcp'))
+ async = utils.tobool(options.get('blockingdhcp')) and \
+ options.get('bootproto') == 'dhcp'
# take down nics that need to be changed
vlanedIfaces = [v['iface'] for v in _netinfo.vlans.values()]
@@ -308,70 +304,20 @@
ifdown(nic)
if bridged:
- configWriter.addBridge(network, ipaddr=ipaddr, netmask=netmask,
- mtu=mtu, gateway=gateway, **options)
- ifdown(network)
- # We need to define (if requested) ip, mask & gateway on ifcfg-*
- # only on most top device according to following order:
- # bridge -> vlan -> bond -> nic
- # For lower level devices we should ignore it.
- # reset ip, netmask, gateway and bootproto for lower level devices
- bridgeBootproto = options.get('bootproto')
- ipaddr = netmask = gateway = options['bootproto'] = None
-
- # For VLAN we should attach bridge only to the VLAN device
- # rather than to underlying NICs or bond
- brName = network if bridged else None
- bridgeForNic = None if vlan else brName
-
- # We want to create config files (ifcfg-*) in top-down order
- # (bridge->vlan->bond->nic) to be able to handle IP/NETMASK
- # correctly for bridgeless networks
- if vlan:
- # don't ifup VLAN interface here, it should be done last,
- # after the bond and nic up
- configWriter.addVlan(vlan, iface, network=brName,
- mtu=mtu, bridged=bridged,
- ipaddr=ipaddr, netmask=netmask,
- gateway=gateway, **options)
- iface += '.' + vlan
- vlanBootproto = options.get('bootproto')
- # reset ip, netmask, gateway and bootproto for lower level devices
- ipaddr = netmask = gateway = options['bootproto'] = None
-
- # First we need to prepare all conf files
- if bonding:
- configWriter.addBonding(bonding, bridge=bridgeForNic,
- bondingOptions=bondingOptions,
- mtu=max(prevmtu, mtu),
- ipaddr=ipaddr, netmask=netmask,
- gateway=gateway, **options)
- bondBootproto = options.get('bootproto')
- # reset ip, netmask, gateway and bootproto for lower level devices
- ipaddr = netmask = gateway = options['bootproto'] = None
-
- for nic in nics:
- configWriter.addNic(nic, bonding=bonding,
- bridge=bridgeForNic if not bonding else None,
- mtu=max(prevmtu, mtu), ipaddr=ipaddr,
- netmask=netmask, gateway=gateway, **options)
-
- # Now we can run ifup for all interfaces
- if bonding:
- ifup(bonding, bondBootproto == 'dhcp' and not blockingDhcp)
- else:
- for nic in nics:
- ifup(nic, options.get('bootproto') == 'dhcp' and not blockingDhcp)
-
- # Now we can ifup VLAN interface, because bond and nic already up
- if vlan:
- ifup(iface, vlanBootproto == 'dhcp' and not blockingDhcp)
-
- if bridged:
- ifup(network, bridgeBootproto == 'dhcp' and not blockingDhcp)
-
- # add libvirt network
- configWriter.createLibvirtNetwork(network, bridged, iface)
+ configurator.configureBridge(network, vlan, bonding, nics, ipaddr,
+ netmask, mtu, gateway, bondingOptions,
+ async, **options)
+ elif vlan:
+ configurator.configureVlan(network, vlan, None, bonding, nics,
+ ipaddr, netmask, mtu, gateway,
+ bondingOptions, async, **options)
+ elif bonding:
+ configurator.configureBond(network, bonding, nics, ipaddr, netmask,
+ mtu, gateway, None, bondingOptions, async,
+ **options)
+ elif nics:
+ configurator.configureNic(network, nics[0], None, bonding, ipaddr,
+ netmask, mtu, gateway, async, **options)
def assertBridgeClean(bridge, vlan, bonding, nics):
diff --git a/vdsm/ifcfgConfigurator.py b/vdsm/ifcfgConfigurator.py
index 5723185..288730c 100644
--- a/vdsm/ifcfgConfigurator.py
+++ b/vdsm/ifcfgConfigurator.py
@@ -43,7 +43,108 @@
class IfcfgConfigurator(object):
# TODO: Do all the configWriter interaction from here.
- pass
+ def __init__(self, configWriter=None):
+ self.configWriter = configWriter
+ self.libvirtAdded = []
+
+ def begin(self):
+ if self.configWriter is None:
+ self.configWriter = ConfigWriter()
+ self.libvirtAdded = []
+
+ def rollback(self):
+ if self.configWriter:
+ self.configWriter.restoreBackups()
+ # TODO: Add a try except with logging, but not raising.
+ for network in self.libvirtAdded:
+ self.configWriter.removeLibvirtNetwork(network)
+
+ self.configWriter = None
+
+ def commit(self):
+ if self.configWriter:
+ self.configWriter = None
+ self.libvirtAdded = []
+
+ def configureBridge(self, network, vlan=None, bonding=None, nics=None,
+ ipaddr=None, netmask=None, mtu=None, gateway=None,
+ bondingOptions=None, async=False, **options):
+ self.configWriter.addBridge(network, ipaddr=ipaddr, netmask=netmask,
+ mtu=mtu, gateway=gateway, **options)
+ ifdown(network)
+ options['bootproto'] = None
+ if vlan:
+ iface = self.configureVlan(None, vlan, bridge=network,
+ bonding=bonding, nics=nics, mtu=mtu,
+ bondingOptions=bondingOptions,
+ **options)
+ elif bonding:
+ iface = self.configureBond(None, bonding, nics, bridge=network,
+ bondingOptions=bondingOptions, mtu=mtu,
+ **options)
+ elif nics:
+ mtu = self.configWriter.getMaxMtu(nics, mtu)
+ for nic in nics:
+ iface = self.configureNic(None, nic, bridge=network, mtu=mtu,
+ **options)
+ else:
+ iface = None
+ ifup(network, async)
+ self.configWriter.createLibvirtNetwork(network, True, iface)
+
+ def configureVlan(self, network, vlan, bridge=None, bonding=None,
+ nics=None, ipaddr=None, netmask=None, mtu=None,
+ gateway=None, bondingOptions=None, async=False,
+ **options):
+ iface = (bonding or nics[0])
+ self.configWriter.addVlan(vlan, iface, network=bridge, mtu=mtu,
+ bridged=bridge is not None, ipaddr=ipaddr,
+ netmask=netmask, gateway=gateway, **options)
+ iface += '.' + vlan
+ options['bootproto'] = None
+ if bonding:
+ self.configureBond(None, bonding, nics, bridge=None,
+ bondingOptions=bondingOptions, mtu=mtu,
+ **options)
+ elif nics:
+ mtu = self.configWriter.getMaxMtu(nics, mtu)
+ for nic in nics:
+ self.configureNic(None, nic, bridge=None, mtu=mtu, **options)
+ ifup(iface, async)
+ if network:
+ self.configWriter.createLibvirtNetwork(network, False, iface)
+ return iface
+
+ def configureBond(self, network, bonding=None, nics=None, ipaddr=None,
+ netmask=None, mtu=None, gateway=None, bridge=None,
+ bondingOptions=None, async=False, **options):
+ mtu = self.configWriter.getMaxMtu(nics, mtu)
+ self.configWriter.addBonding(bonding, bridge=bridge,
+ bondingOptions=bondingOptions,
+ mtu=mtu, ipaddr=ipaddr,
+ netmask=netmask, gateway=gateway,
+ **options)
+ options['bootproto'] = None
+ for nic in nics:
+ self.configureNic(None, nic, bonding=bonding, mtu=mtu, **options)
+
+ ifup(bonding, async)
+ if network:
+ self.configWriter.createLibvirtNetwork(network, False, bonding)
+ return bonding
+
+ def configureNic(self, network, nic, bridge=None, bonding=None,
+ ipaddr=None, netmask=None, mtu=None, gateway=None,
+ async=False, **options):
+ self.configWriter.addNic(nic, bonding=bonding, bridge=bridge, mtu=mtu,
+ ipaddr=ipaddr, netmask=netmask,
+ gateway=gateway, **options)
+ if not bonding:
+ ifup(nic, async)
+
+ if network:
+ self.configWriter.createLibvirtNetwork(network, False, nic)
+ return nic
class ConfigWriter(object):
--
To view, visit http://gerrit.ovirt.org/13268
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I877eddc07a17f0bdd376df7bab8b19ffe52f72ba
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Antoni Segura Puimedon <asegurap(a)redhat.com>
11 years, 1 month
Change in vdsm[master]: Remove unnecessary storage log messages from logs
by vvolansk@redhat.com
Vered Volansky has uploaded a new change for review.
Change subject: Remove unnecessary storage log messages from logs
......................................................................
Remove unnecessary storage log messages from logs
1. Removed all storage log messages from syslog.
2. Removed "namespace already exists" log messages from vdsm log since they
they are not interesting. These messages originated from
resourceManager.registerNamespace().
3. Previously, above method errors were all caught and treated as the
KeyError, which means non-KeyError exceptions were swallowed. Now
KeyErrors are ignored intentionally, and other potential exceptions
are not caught at all, i.e., not swallowed anymore.
Bug-Url: https://bugzilla.redhat.com/920074
../vdsm_cli/
Change-Id: Ifc0fa5ca50e4eb78d62fd3cdc8b09723486bcaa0
Signed-off-by: Vered Volansky <vvolansk(a)redhat.com>
---
M vdsm/logger.conf.in
M vdsm/storage/blockSD.py
M vdsm/storage/sd.py
3 files changed, 7 insertions(+), 10 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/17/13617/1
diff --git a/vdsm/logger.conf.in b/vdsm/logger.conf.in
index 0a4622f..824e169 100644
--- a/vdsm/logger.conf.in
+++ b/vdsm/logger.conf.in
@@ -20,7 +20,7 @@
[logger_Storage]
level=DEBUG
-handlers=syslog,logfile
+handlers=logfile
qualname=Storage
propagate=0
diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py
index 9809bf4..0eeb639 100644
--- a/vdsm/storage/blockSD.py
+++ b/vdsm/storage/blockSD.py
@@ -447,9 +447,8 @@
try:
rmanager.registerNamespace(lvmActivationNamespace,
lvmActivationFactory)
- except Exception:
- self.log.warn("Resource namespace %s already registered",
- lvmActivationNamespace)
+ except KeyError:
+ pass
@classmethod
def metaSize(cls, vgroup):
diff --git a/vdsm/storage/sd.py b/vdsm/storage/sd.py
index 73154cc..369d2ce 100644
--- a/vdsm/storage/sd.py
+++ b/vdsm/storage/sd.py
@@ -368,17 +368,15 @@
try:
rmanager.registerNamespace(imageResourcesNamespace,
imageResourceFactory)
- except Exception:
- self.log.warn("Resource namespace %s already registered",
- imageResourcesNamespace)
+ except KeyError:
+ pass
volumeResourcesNamespace = getNamespace(self.sdUUID, VOLUME_NAMESPACE)
try:
rmanager.registerNamespace(volumeResourcesNamespace,
rm.SimpleResourceFactory())
- except Exception:
- self.log.warn("Resource namespace %s already registered",
- volumeResourcesNamespace)
+ except KeyError:
+ pass
def produceVolume(self, imgUUID, volUUID):
"""
--
To view, visit http://gerrit.ovirt.org/13617
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifc0fa5ca50e4eb78d62fd3cdc8b09723486bcaa0
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Vered Volansky <vvolansk(a)redhat.com>
11 years, 1 month
Change in vdsm[master]: vdsm.spec: increase policycoreutils version for RHEL
by Douglas Schilling Landgraf
Douglas Schilling Landgraf has uploaded a new change for review.
Change subject: vdsm.spec: increase policycoreutils version for RHEL
......................................................................
vdsm.spec: increase policycoreutils version for RHEL
Due bz#893065 if selinux is disable vdsm package can not
be installed on RHEL systems.
Change-Id: Ib2b40781e4e6bba28ac5ebcf54ff089bad09e36d
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=903309
Signed-off-by: Douglas Schilling Landgraf <dougsland(a)redhat.com>
---
M vdsm.spec.in
1 file changed, 4 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/41/11341/1
diff --git a/vdsm.spec.in b/vdsm.spec.in
index 632d315..aef89ba 100644
--- a/vdsm.spec.in
+++ b/vdsm.spec.in
@@ -93,6 +93,7 @@
Requires: libvirt
Requires: lvm2
Requires: python
+Requires: policycoreutils-python
Requires: qemu-kvm
Requires: qemu-kvm-img
Requires: sanlock, sanlock-python
@@ -110,6 +111,8 @@
Requires: sanlock >= 2.3-4, sanlock-python
Requires: initscripts >= 9.03.31-2.el6_3.1
Requires: mom >= 0.3.0
+Requires: policycoreutils >= 2.0.83-19.30
+Requires: policycoreutils-python >= 2.0.83-19.30
Requires: selinux-policy-targeted >= 3.7.19-155
Requires: lvm2 >= 2.02.95-10.el6_3.2
Requires: logrotate < 3.8.0
@@ -126,6 +129,7 @@
Requires: kernel >= 3.6
Requires: mom >= 0.3.0
Requires: sanlock >= 2.4-2, sanlock-python
+Requires: policycoreutils-python
Requires: sed >= 4.2.1-10
Requires: selinux-policy-targeted >= 3.10.0-149
Requires: lvm2 >= 2.02.95
@@ -144,7 +148,6 @@
Requires: sos
Requires: tree
Requires: dosfstools
-Requires: policycoreutils-python
Requires: genisoimage
Requires: libselinux-python
Requires: %{name}-python = %{version}-%{release}
--
To view, visit http://gerrit.ovirt.org/11341
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib2b40781e4e6bba28ac5ebcf54ff089bad09e36d
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Douglas Schilling Landgraf <dougsland(a)redhat.com>
11 years, 1 month
Change in vdsm[master]: Separate sampling code from vdsm.utils
by Dan Kenigsberg
Dan Kenigsberg has submitted this change and it was merged.
Change subject: Separate sampling code from vdsm.utils
......................................................................
Separate sampling code from vdsm.utils
vdsm.utils should only include helper functions which could be shared
different modules. Sampling is a separate function, so it should be
moved out of utils. It could resolve the problem of circular import.
Change-Id: I1de4c81b3cf202f9f548a59b86ef0c8a97c2af19
Signed-off-by: Mark Wu <wudxw(a)linux.vnet.ibm.com>
---
M lib/vdsm/utils.py
M vdsm.spec.in
M vdsm/Makefile.am
M vdsm/clientIF.py
M vdsm/libvirtvm.py
A vdsm/sampling.py
6 files changed, 615 insertions(+), 529 deletions(-)
Approvals:
Mark Wu: Verified
Dan Kenigsberg: Looks good to me, approved
--
To view, visit http://gerrit.ovirt.org/13838
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I1de4c81b3cf202f9f548a59b86ef0c8a97c2af19
Gerrit-PatchSet: 2
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Gerrit-Reviewer: Yaniv Bronhaim <ybronhei(a)redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
11 years, 1 month
Change in vdsm[master]: Separate sampling code from vdsm.utils
by Dan Kenigsberg
Dan Kenigsberg has posted comments on this change.
Change subject: Separate sampling code from vdsm.utils
......................................................................
Patch Set 2: Looks good to me, approved
Mark, have you overheard it when I've asked Yaniv to perform this very same separation? I like it very much!
--
To view, visit http://gerrit.ovirt.org/13838
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I1de4c81b3cf202f9f548a59b86ef0c8a97c2af19
Gerrit-PatchSet: 2
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Gerrit-Reviewer: Yaniv Bronhaim <ybronhei(a)redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
11 years, 1 month
Change in vdsm[master]: Separate sampling code from vdsm.utils
by wudxw@linux.vnet.ibm.com
Mark Wu has posted comments on this change.
Change subject: Separate sampling code from vdsm.utils
......................................................................
Patch Set 2: Verified
--
To view, visit http://gerrit.ovirt.org/13838
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I1de4c81b3cf202f9f548a59b86ef0c8a97c2af19
Gerrit-PatchSet: 2
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Gerrit-Reviewer: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
11 years, 1 month