Change in vdsm[master]: BZ#836161 - Clean up.
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: BZ#836161 - Clean up.
......................................................................
BZ#836161 - Clean up.
Change-Id: Icf01de7dc8bf0a903ebf94d9e33ffad9a195b7de
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/sp.py
1 file changed, 0 insertions(+), 71 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/07/8507/1
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index 78fbe66..0ade40d 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -1766,73 +1766,6 @@
image.Image(repoPath).multiMove(srcDomUUID, dstDomUUID, imgDict, vmUUID, force)
- def deleteImage(self, sdUUID, imgUUID, postZero, force):
- """
- Deletes an Image folder with all its volumes.
-
- This function assumes that imgUUID is locked.
- In addition to removing image, this function also does the following:
- If removing a template from a backup SD which has dependent images:
- - creates a fake template.
- If removing the last image which depends on a fake template:
- - removes the fake template as well
- :param sdUUID: The UUID of the storage domain that contains the images.
- :type sdUUID: UUID
- :param imgUUID: The UUID of the image you want to delete.
- :type imgUUID: UUID
- :param postZero: bool
- :param force: Should the operation be forced.
- :type force: bool
- """
- # TODO: This function works on domains. No relation with pools.
- # Therefore move this to the relevant *sd module
- repoPath = os.path.join(self.storage_repository, self.spUUID)
- img = image.Image(repoPath)
- dom = sdCache.produce(sdUUID)
- allVols = dom.getAllVolumes()
- # Filter volumes related to this image
- imgsByVol = sd.getVolsOfImage(allVols, imgUUID)
- if all(len(v.imgs) == 1 for k, v in imgsByVol.iteritems()):
- # This is a self contained regular image, i.e. it's either an image
- # which is not based on a template or a template which has no
- # derived images, e.g. not derived from a template
- img.delete(sdUUID=sdUUID, imgUUID=imgUUID, postZero=postZero, force=force)
- else:
- # This is either a template with derived images or a derived image
- # so needs further scrutiny
- ts = tuple((volName, vol.imgs) for volName, vol in
- imgsByVol.iteritems() if len(vol.imgs) > 1)
- if len(ts) != 1:
- raise se.ImageValidationError("Image points to multiple"
- "templates %s in %s from %s" % \
- (ts, imgsByVol, allVols))
- # TODO: Lock the template, reload allVols.
- # template = ts[0] = [(tName, tImgs)]
- tName, tImgs = ts[0]
- # getAllVolumes makes the template self img the 1st one in tImgs
- templateImage = tImgs[0]
- numOfDependentImgs = len(tImgs) - 1
- if templateImage != imgUUID:
- # Removing an image based on a template
- img.delete(sdUUID=sdUUID, imgUUID=imgUUID, postZero=postZero, force=force)
- if numOfDependentImgs == 1 and dom.produceVolume(templateImage, tName).isFake():
- # Remove the fake template since last consumer was removed
- img.delete(sdUUID=sdUUID, imgUUID=templateImage, postZero=False, force=True)
-
- # Removing a template with dependencies
- elif force:
- img.delete(sdUUID=sdUUID, imgUUID=templateImage, postZero=postZero,
- force=force)
- elif not dom.isBackup():
- raise se.ImagesActionError("Can't remove template with children %s",
- allVols)
- else:
- # Removing a template with dependencies in backup domain
- # A fake template will be created
- img.delete(sdUUID=sdUUID, imgUUID=imgUUID, postZero=postZero, force=True)
- tParams = dom.produceVolume(imgUUID, tName).getVolumeParams()
- img.createFakeTemplate(sdUUID=sdUUID, volParams=tParams)
-
def mergeSnapshots(self, sdUUID, vmUUID, imgUUID, ancestor, successor, postZero):
"""
Merges the source volume to the destination volume.
@@ -2012,10 +1945,6 @@
def preDeleteRename(self, sdUUID, imgUUID):
repoPath = os.path.join(self.storage_repository, self.spUUID)
return image.Image(repoPath).preDeleteRename(sdUUID, imgUUID)
-
- def validateDelete(self, sdUUID, imgUUID):
- repoPath = os.path.join(self.storage_repository, self.spUUID)
- image.Image(repoPath).validateDelete(sdUUID, imgUUID)
def validateVolumeChain(self, sdUUID, imgUUID):
repoPath = os.path.join(self.storage_repository, self.spUUID)
--
To view, visit http://gerrit.ovirt.org/8507
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icf01de7dc8bf0a903ebf94d9e33ffad9a195b7de
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
10 years, 12 months
Change in vdsm[master]: Remove Image.deleteRecover().
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: Remove Image.deleteRecover().
......................................................................
Remove Image.deleteRecover().
Since the image is renamed immediatly, this recover will fail
anyway.
Related to: BZ#960952, BZ#910013, BZ#905938, BZ#875708, BZ#864073
Change-Id: I73506488210e53abb2e416b10b2bfe0f091f7ec8
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/image.py
1 file changed, 0 insertions(+), 15 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/47/15747/1
diff --git a/vdsm/storage/image.py b/vdsm/storage/image.py
index 5f39c91..182f1ab 100644
--- a/vdsm/storage/image.py
+++ b/vdsm/storage/image.py
@@ -137,12 +137,6 @@
"""
Delete whole image
"""
- name = "delete image %s retry" % imgUUID
- vars.task.pushRecovery(task.Recovery(name, "image", "Image",
- "deleteRecover", [self.repoPath, sdUUID,
- imgUUID, str(postZero),
- str(force)]))
-
try:
self._delete(sdUUID, imgUUID, postZero, force)
except se.StorageException:
@@ -151,15 +145,6 @@
except Exception as e:
self.log.error("Unexpected error", exc_info=True)
raise se.ImageDeleteError("%s: %s" % (imgUUID, str(e)))
-
- @classmethod
- def deleteRecover(cls, taskObj, repoPath, sdUUID, imgUUID, postZero,
- force):
- """
- Delete image rollforward
- """
- Image(repoPath)._delete(sdUUID, imgUUID, misc.parseBool(postZero),
- misc.parseBool(force))
def validateDelete(self, sdUUID, imgUUID):
"""
--
To view, visit http://gerrit.ovirt.org/15747
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I73506488210e53abb2e416b10b2bfe0f091f7ec8
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
10 years, 12 months
Change in vdsm[master]: introducing virtio-scsi support
by derez@redhat.com
Daniel Erez has uploaded a new change for review.
Change subject: introducing virtio-scsi support
......................................................................
introducing virtio-scsi support
Drive class:
* makeName - map 'scsi' to 'sd'
* getXML - add 'sgio' flag [1]
LibvirtVm class:
* getUnderlyingDriveInfo - get/set 'sgio' attribute.
TestLibvirtvm class:
* testControllerXML - test 'virtio-scsi' controller
* testDriveXML:
- test virtio-scsi image disk
- test virtio-scsi LUN passthrough
[1] 'sgio': SCSI Generic IO - filtered/unfiltered
(indicates whether the kernel will filter unprivileged
SG_IO commands for the disk).
Change-Id: If624064269328253dbc3cb32a72e20f01cdb0958
Signed-off-by: Daniel Erez <derez(a)redhat.com>
---
M tests/libvirtvmTests.py
M vdsm/libvirtvm.py
2 files changed, 51 insertions(+), 6 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/81/14681/1
diff --git a/tests/libvirtvmTests.py b/tests/libvirtvmTests.py
index f7fd054..bef61dd 100644
--- a/tests/libvirtvmTests.py
+++ b/tests/libvirtvmTests.py
@@ -292,12 +292,19 @@
def testControllerXML(self):
devConfs = [
{'device': 'ide', 'index': '0', 'address': self.PCI_ADDR_DICT},
+ {'device': 'scsi', 'index': '0', 'model': 'virtio-scsi',
+ 'address': self.PCI_ADDR_DICT},
{'device': 'virtio-serial', 'address': self.PCI_ADDR_DICT},
{'device': 'usb', 'model': 'ich9-ehci1', 'index': '0',
'master': {'startport': '0'}, 'address': self.PCI_ADDR_DICT}]
expectedXMLs = [
"""
<controller index="0" type="ide">
+ <address %s/>
+ </controller>""",
+
+ """
+ <controller index="0" model="virtio-scsi" type="scsi">
<address %s/>
</controller>""",
@@ -343,7 +350,17 @@
{'index': '0', 'propagateErrors': 'off', 'iface': 'virtio',
'name': 'vda', 'format': 'raw', 'device': 'disk',
'path': '/dev/mapper/lun1', 'type': 'disk', 'readonly': 'False',
- 'shared': 'False', 'serial': SERIAL}]
+ 'shared': 'False', 'serial': SERIAL},
+
+ {'index': '0', 'propagateErrors': 'off', 'iface': 'scsi',
+ 'name': 'sda', 'format': 'raw', 'device': 'disk',
+ 'path': '/tmp/disk1.img', 'type': 'disk', 'readonly': 'False',
+ 'shared': 'False', 'serial': SERIAL},
+
+ {'index': '0', 'propagateErrors': 'off', 'iface': 'scsi',
+ 'name': 'sda', 'format': 'raw', 'device': 'lun',
+ 'path': '/dev/mapper/lun1', 'type': 'disk', 'readonly': 'False',
+ 'shared': 'False', 'serial': SERIAL, 'sgio': 'unfiltered'}]
expectedXMLs = [
"""
@@ -371,10 +388,29 @@
<serial>%s</serial>
<driver cache="none" error_policy="stop"
io="native" name="qemu" type="raw"/>
+ </disk>""",
+
+ """
+ <disk device="disk" snapshot="no" type="file">
+ <source file="/tmp/disk1.img"/>
+ <target bus="scsi" dev="sda"/>
+ <serial>%s</serial>
+ <driver cache="none" error_policy="stop"
+ io="threads" name="qemu" type="raw"/>
+ </disk>""",
+
+ """
+ <disk device="lun" sgio="unfiltered" snapshot="no" type="block">
+ <source dev="/dev/mapper/lun1"/>
+ <target bus="scsi" dev="sda"/>
+ <serial>%s</serial>
+ <driver cache="none" error_policy="stop"
+ io="native" name="qemu" type="raw"/>
</disk>"""]
- blockDevs = [False, False, True]
- vmConfs = [{}, {'custom': {'viodiskcache': 'writethrough'}}, {}]
+ blockDevs = [False, False, True, False, True]
+ vmConfs = [{}, {'custom': {'viodiskcache': 'writethrough'}},
+ {}, {}, {}]
for (devConf, xml, blockDev, vmConf) in \
zip(devConfs, expectedXMLs, blockDevs, vmConfs):
diff --git a/vdsm/libvirtvm.py b/vdsm/libvirtvm.py
index 1bb5f5e..ab551bc 100644
--- a/vdsm/libvirtvm.py
+++ b/vdsm/libvirtvm.py
@@ -1091,7 +1091,7 @@
self.cache = config.get('vars', 'qemu_drive_cache')
def _makeName(self):
- devname = {'ide': 'hd', 'virtio': 'vd', 'fdc': 'fd'}
+ devname = {'ide': 'hd', 'scsi': 'sd', 'virtio': 'vd', 'fdc': 'fd'}
devindex = ''
i = int(self.index)
@@ -1136,8 +1136,10 @@
sourceAttrs['startupPolicy'] = 'optional'
source.setAttrs(**sourceAttrs)
diskelem = self.createXmlElem('disk', deviceType,
- ['device', 'address'])
+ ['device', 'address', 'sgio'])
diskelem.setAttrs(snapshot='no')
+ if hasattr(self, 'sgio'):
+ diskelem.setAttrs(sgio=self.sgio)
diskelem.appendChild(source)
targetAttrs = {'dev': self.name}
@@ -1154,7 +1156,7 @@
if hasattr(self, 'bootOrder'):
diskelem.appendChildWithArgs('boot', order=self.bootOrder)
- if self.device == 'disk':
+ if self.device == 'disk' or self.device == 'lun':
driverAttrs = {'name': 'qemu'}
if self.blockDev:
driverAttrs['io'] = 'native'
@@ -3013,6 +3015,9 @@
# Get disk address
address = self._getUnderlyingDeviceAddress(x)
+ # Get sgio value (filtered/unfiltered)
+ sgio = x.getAttribute('sgio')
+
for d in self._devices[vm.DISK_DEVICES]:
if d.path == devPath:
d.name = name
@@ -3023,6 +3028,8 @@
d.readonly = readonly
if bootOrder:
d.bootOrder = bootOrder
+ if sgio:
+ d.sgio = sgio
# Update vm's conf with address for known disk devices
knownDev = False
for dev in self.conf['devices']:
@@ -3033,6 +3040,8 @@
dev['readonly'] = str(readonly)
if bootOrder:
dev['bootOrder'] = bootOrder
+ if sgio:
+ dev['sgio'] = sgio
knownDev = True
# Add unknown disk device to vm's conf
if not knownDev:
--
To view, visit http://gerrit.ovirt.org/14681
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If624064269328253dbc3cb32a72e20f01cdb0958
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <derez(a)redhat.com>
10 years, 12 months
Change in vdsm[master]: Added 3.3 to SupportedENGINES in dsaversion
by apahim@redhat.com
Amador Pahim has uploaded a new change for review.
Change subject: Added 3.3 to SupportedENGINES in dsaversion
......................................................................
Added 3.3 to SupportedENGINES in dsaversion
Change-Id: I16b668f4d494c1c63fe89f8c54e5c13b94dc2911
Signed-off-by: Amador Pahim <apahim(a)redhat.com>
---
M vdsm/dsaversion.py.in
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/75/15675/1
diff --git a/vdsm/dsaversion.py.in b/vdsm/dsaversion.py.in
index d6e156b..6433fb6 100644
--- a/vdsm/dsaversion.py.in
+++ b/vdsm/dsaversion.py.in
@@ -33,7 +33,7 @@
'version_name': version_name,
'software_version': software_version,
'software_revision': software_revision,
- 'supportedENGINEs': ['3.0', '3.1', '3.2'],
+ 'supportedENGINEs': ['3.0', '3.1', '3.2', '3.3'],
'supportedProtocols': ['2.2', '2.3'],
'clusterLevels': ['3.0', '3.1', '3.2', '3.3'],
}
--
To view, visit http://gerrit.ovirt.org/15675
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I16b668f4d494c1c63fe89f8c54e5c13b94dc2911
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Amador Pahim <apahim(a)redhat.com>
10 years, 12 months
Change in vdsm[master]: Added 3.2 to SupportedENGINES in dsaversion
by amuller@redhat.com
Assaf Muller has uploaded a new change for review.
Change subject: Added 3.2 to SupportedENGINES in dsaversion
......................................................................
Added 3.2 to SupportedENGINES in dsaversion
Change-Id: Ia3a0bd0edecd24a00edc0a5b07cad59d2c27bd7e
Signed-off-by: Assaf Muller <amuller(a)redhat.com>
---
M vdsm/dsaversion.py.in
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/63/15663/1
diff --git a/vdsm/dsaversion.py.in b/vdsm/dsaversion.py.in
index 246a95a..d6e156b 100644
--- a/vdsm/dsaversion.py.in
+++ b/vdsm/dsaversion.py.in
@@ -33,7 +33,7 @@
'version_name': version_name,
'software_version': software_version,
'software_revision': software_revision,
- 'supportedENGINEs': ['3.0', '3.1'],
+ 'supportedENGINEs': ['3.0', '3.1', '3.2'],
'supportedProtocols': ['2.2', '2.3'],
'clusterLevels': ['3.0', '3.1', '3.2', '3.3'],
}
--
To view, visit http://gerrit.ovirt.org/15663
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia3a0bd0edecd24a00edc0a5b07cad59d2c27bd7e
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Assaf Muller <amuller(a)redhat.com>
10 years, 12 months
Change in vdsm[master]: vdsmd.init: ajust libvirt log file
by Douglas Schilling Landgraf
Douglas Schilling Landgraf has uploaded a new change for review.
Change subject: vdsmd.init: ajust libvirt log file
......................................................................
vdsmd.init: ajust libvirt log file
Nowadays VDSM configure libvirt daemon to log into /var/log/libvirtd.log.
This patch will make vdsm set the log file into the current default
location for libvirt logs /var/log/libvirt/libvirtd.conf.
Change-Id: Iee325d456cc3d184c0084c4bf547bc126a00938a
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=755548
Signed-off-by: Douglas Schilling Landgraf <dougsland(a)redhat.com>
---
M vdsm/vdsmd.init.in
1 file changed, 2 insertions(+), 3 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/42/14842/1
diff --git a/vdsm/vdsmd.init.in b/vdsm/vdsmd.init.in
index 994d869..e177b59 100755
--- a/vdsm/vdsmd.init.in
+++ b/vdsm/vdsmd.init.in
@@ -350,8 +350,7 @@
set_if_default $ldconf LIBVIRTD_ARGS --listen
set_if_default $ldconf DAEMON_COREFILE_LIMIT unlimited
set_if_default $qconf save_image_format \"lzop\"
- # FIXME until we are confident with libvirt integration, let us have a verbose log
- set_if_default $lconf log_outputs \"1:file:/var/log/libvirtd.log\"
+ set_if_default $lconf log_outputs \"1:file:/var/log/libvirt/libvirtd.log\"
set_if_default $lconf log_filters "\"3:virobject 3:virfile 2:virnetlink \
3:cgroup 3:event 3:json 1:libvirt 1:util 1:qemu\""
@@ -393,7 +392,7 @@
local stanza=`mktemp`
/bin/cat > "$stanza" <<EOF
# vdsm
-/var/log/libvirtd.log {
+/var/log/libvirt/libvirtd.log {
rotate 100
missingok
copytruncate
--
To view, visit http://gerrit.ovirt.org/14842
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iee325d456cc3d184c0084c4bf547bc126a00938a
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Douglas Schilling Landgraf <dougsland(a)redhat.com>
10 years, 12 months
Change in vdsm[master]: vdsm-tool: extend "service" module to check existence of a s...
by zhshzhou@linux.vnet.ibm.com
Zhou Zheng Sheng has uploaded a new change for review.
Change subject: vdsm-tool: extend "service" module to check existence of a service
......................................................................
vdsm-tool: extend "service" module to check existence of a service
Add a service-is-managed command to check if a service is managed by
either of the supported init systems. With the decorator _XXXNative in
previous commit, the implementation of service-is-managed command is
straight forward: just add _XXXNative tag to a action function that
always succeeds.
Change-Id: I23a7d98e39eaacd5f2dfa817bfae6defb5fc9ebe
Signed-off-by: Zhou Zheng Sheng <zhshzhou(a)linux.vnet.ibm.com>
---
M lib/vdsm/tool/service.py
1 file changed, 24 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/00/15100/1
diff --git a/lib/vdsm/tool/service.py b/lib/vdsm/tool/service.py
index b483ed5..ee71232 100644
--- a/lib/vdsm/tool/service.py
+++ b/lib/vdsm/tool/service.py
@@ -62,6 +62,7 @@
_srvStatusAlts = []
_srvRestartAlts = []
_srvDisableAlts = []
+_srvIsManagedAlts = []
try:
_SYSTEMCTL.cmd
@@ -106,11 +107,16 @@
cmd = [_SYSTEMCTL.cmd, "disable", srvName]
return execCmd(cmd)
+ @_systemctlNative
+ def _systemctlIsManaged(srvName):
+ return (0, '', '')
+
_srvStartAlts.append(_systemctlStart)
_srvStopAlts.append(_systemctlStop)
_srvStatusAlts.append(_systemctlStatus)
_srvRestartAlts.append(_systemctlRestart)
_srvDisableAlts.append(_systemctlDisable)
+ _srvIsManagedAlts.append(_systemctlIsManaged)
def _isStopped(message):
@@ -179,11 +185,16 @@
f.write("manual\n")
return 0, "", ""
+ @_initctlNative
+ def _initctlIsManaged(srvName):
+ return (0, '', '')
+
_srvStartAlts.append(_initctlStart)
_srvStopAlts.append(_initctlStop)
_srvStatusAlts.append(_initctlStatus)
_srvRestartAlts.append(_initctlRestart)
_srvDisableAlts.append(_initctlDisable)
+ _srvIsManagedAlts.append(_initctlIsManaged)
def _sysvNative(sysvFun):
@@ -228,10 +239,15 @@
cmd = [_SERVICE.cmd, srvName, "restart"]
return _execSysvEnv(cmd)
+ @_sysvNative
+ def _serviceIsManaged(srvName):
+ return (0, '', '')
+
_srvStartAlts.append(_serviceStart)
_srvStopAlts.append(_serviceStop)
_srvRestartAlts.append(_serviceRestart)
_srvStatusAlts.append(_serviceStatus)
+ _srvIsManagedAlts.append(_serviceIsManaged)
try:
@@ -314,3 +330,11 @@
Disable a system service
"""
return _runAlts(_srvDisableAlts, srvName)
+
+
+@expose("service-is-managed")
+def service_is_managed(srvName):
+ """
+ Check the existence of a service
+ """
+ return _runAlts(_srvIsManagedAlts, srvName)
--
To view, visit http://gerrit.ovirt.org/15100
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I23a7d98e39eaacd5f2dfa817bfae6defb5fc9ebe
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Zhou Zheng Sheng <zhshzhou(a)linux.vnet.ibm.com>
10 years, 12 months
Change in vdsm[master]: vdsm-tool: avoid service action redirections
by zhshzhou@linux.vnet.ibm.com
Zhou Zheng Sheng has uploaded a new change for review.
Change subject: vdsm-tool: avoid service action redirections
......................................................................
vdsm-tool: avoid service action redirections
Some smart init system will redirect actions to other init system when
the service is not managed natively. This behaviour interferes the
parsing of the service action output.
Add a decorator _XXXNative to check if a service is managed by a certain
init system. _XXXNative tag is then added to every action function to
avoid execution of an action on a service that is not managed by that
particular init system, so as to avoid redirections.
An environment variable is also added for SysV actions to prevent
redirection to SystemD, this is specific for those systems with
co-existence of SystemD and SysV, and is no harm to those systems with
only SysV or with co-existence of Upstart and SysV.
Change-Id: Idff541a724e3e2d2167b1f235af5ed04a3dc2ee0
Signed-off-by: Zhou Zheng Sheng <zhshzhou(a)linux.vnet.ibm.com>
---
M lib/vdsm/tool/service.py
1 file changed, 43 insertions(+), 8 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/99/15099/1
diff --git a/lib/vdsm/tool/service.py b/lib/vdsm/tool/service.py
index 8f69f41..b483ed5 100644
--- a/lib/vdsm/tool/service.py
+++ b/lib/vdsm/tool/service.py
@@ -31,8 +31,8 @@
from vdsm.utils import execCmd as _execCmd
-def execCmd(argv, raw=True):
- return _execCmd(argv, raw=raw)
+def execCmd(argv, raw=True, *args, **kwargs):
+ return _execCmd(argv, raw=raw, *args, **kwargs)
_SYSTEMCTL = CommandPath("systemctl",
@@ -76,9 +76,9 @@
if rc != 0:
return (rc, out, err)
for line in out:
- if srvName + ".service" == line.split(" ", 1):
+ if srvName + ".service" == line.split(" ", 1)[0]:
return systemctlFun(srvName)
- return (1, "", "%s is not native systemctl service")
+ return (1, "", "%s is not native systemctl service" % srvName)
return wrapper
@_systemctlNative
@@ -122,6 +122,18 @@
except OSError:
pass
else:
+ def _initctlNative(initctlFun):
+ @functools.wraps(initctlFun)
+ def wrapper(srvName):
+ cmd = [_INITCTL.cmd, "usage", srvName]
+ rc, out, err = execCmd(cmd, raw=False)
+ if rc != 0:
+ return (1, "", "%s is not an Upstart service" % srvName)
+
+ return initctlFun(srvName)
+ return wrapper
+
+ @_initctlNative
def _initctlStart(srvName):
cmd = [_INITCTL.cmd, "start", srvName]
alreadyRunRegex = r"\bis already running\b"
@@ -132,6 +144,7 @@
rc = int(not re.search(alreadyRunRegex, err, re.MULTILINE))
return (rc, out, err)
+ @_initctlNative
def _initctlStop(srvName):
cmd = [_INITCTL.cmd, "stop", srvName]
alreadyStoppedRegex = r'\bUnknown instance\b'
@@ -142,6 +155,7 @@
rc = int(not re.search(alreadyStoppedRegex, err, re.MULTILINE))
return (rc, out, err)
+ @_initctlNative
def _initctlStatus(srvName):
cmd = [_INITCTL.cmd, "status", srvName]
rc, out, err = execCmd(cmd)
@@ -150,12 +164,14 @@
rc = _isStopped(out)
return (rc, out, err)
+ @_initctlNative
def _initctlRestart(srvName):
# "initctl restart someSrv" will not restart the service if it is
# already running, so we force it to do so
_initctlStop(srvName)
return _initctlStart(srvName)
+ @_initctlNative
def _initctlDisable(srvName):
if not os.path.isfile("/etc/init/%s.conf" % srvName):
return 1, "", ""
@@ -170,30 +186,47 @@
_srvDisableAlts.append(_initctlDisable)
+def _sysvNative(sysvFun):
+ @functools.wraps(sysvFun)
+ def wrapper(srvName):
+ srvPath = os.path.join(os.sep + 'etc', 'init.d', srvName)
+ if os.path.exists(srvPath):
+ return sysvFun(srvName)
+
+ return (1, "", "%s is not a SysV service" % srvName)
+ return wrapper
+
try:
_SERVICE.cmd
except OSError:
pass
else:
+ _sysvEnv = {'SYSTEMCTL_SKIP_REDIRECT': '1'}
+ _execSysvEnv = functools.partial(execCmd, env=_sysvEnv)
+
+ @_sysvNative
def _serviceStart(srvName):
cmd = [_SERVICE.cmd, srvName, "start"]
- return execCmd(cmd)
+ return _execSysvEnv(cmd)
+ @_sysvNative
def _serviceStop(srvName):
cmd = [_SERVICE.cmd, srvName, "stop"]
- return execCmd(cmd)
+ return _execSysvEnv(cmd)
+ @_sysvNative
def _serviceStatus(srvName):
cmd = [_SERVICE.cmd, srvName, "status"]
- rc, out, err = execCmd(cmd)
+ rc, out, err = _execSysvEnv(cmd)
if rc == 0:
# certain service rc is 0 even though the service is stopped
rc = _isStopped(out)
return (rc, out, err)
+ @_sysvNative
def _serviceRestart(srvName):
cmd = [_SERVICE.cmd, srvName, "restart"]
- return execCmd(cmd)
+ return _execSysvEnv(cmd)
_srvStartAlts.append(_serviceStart)
_srvStopAlts.append(_serviceStop)
@@ -206,6 +239,7 @@
except OSError:
pass
else:
+ @_sysvNative
def _chkconfigDisable(srvName):
cmd = [_CHKCONFIG.cmd, srvName, "off"]
return execCmd(cmd)
@@ -218,6 +252,7 @@
except OSError:
pass
else:
+ @_sysvNative
def _updatercDisable(srvName):
cmd = [_UPDATERC.cmd, srvName, "disable"]
return execCmd(cmd)
--
To view, visit http://gerrit.ovirt.org/15099
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idff541a724e3e2d2167b1f235af5ed04a3dc2ee0
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Zhou Zheng Sheng <zhshzhou(a)linux.vnet.ibm.com>
10 years, 12 months
Change in vdsm[master]: QoS feature: Adds bandwitdh elem to a network interface defi...
by gvallare@redhat.com
Giuseppe Vallarelli has uploaded a new change for review.
Change subject: QoS feature: Adds bandwitdh elem to a network interface definition.
......................................................................
QoS feature: Adds bandwitdh elem to a network interface definition.
NetworkInterfaceDevice can now generate xml definition for shaping
incoming and outgoing traffic supported attributes are the following
ones: average, burst and peak.
Change-Id: Iec7c61d2713270dc8e46ee01f155e2ad54c748a5
Signed-off-by: Giuseppe Vallarelli <gvallare(a)redhat.com>
---
M tests/libvirtvmTests.py
M vdsm/vm.py
2 files changed, 25 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/45/15445/1
diff --git a/tests/libvirtvmTests.py b/tests/libvirtvmTests.py
index ccb8b26..118933b 100644
--- a/tests/libvirtvmTests.py
+++ b/tests/libvirtvmTests.py
@@ -350,12 +350,18 @@
<tune>
<sndbuf>0</sndbuf>
</tune>
+ <bandwidth>
+ <inbound average="1000" burst="1024" peak="5000"/>
+ <outbound average="128" burst="256" peak="256"/>
+ </bandwidth>
</interface>""" % self.PCI_ADDR
dev = {'nicModel': 'virtio', 'macAddr': '52:54:00:59:F5:3F',
'network': 'ovirtmgmt', 'address': self.PCI_ADDR_DICT,
'device': 'bridge', 'type': 'interface',
- 'bootOrder': '1', 'filter': 'no-mac-spoofing'}
+ 'bootOrder': '1', 'filter': 'no-mac-spoofing',
+ 'inbound': {'avg': '1000', 'peak': '5000', 'burst': '1024'},
+ 'outbound': {'avg': '128', 'peak': '256', 'burst': '256'}}
self.conf['custom'] = {'vhost': 'ovirtmgmt:true', 'sndbuf': '0'}
iface = vm.NetworkInterfaceDevice(self.conf, self.log, **dev)
diff --git a/vdsm/vm.py b/vdsm/vm.py
index 67328d2..4e4076e 100644
--- a/vdsm/vm.py
+++ b/vdsm/vm.py
@@ -1246,6 +1246,10 @@
[<filterref filter='filter name'/>]
[<tune><sndbuf>0</sndbuf></tune>]
[<link state='up|down'/>]
+ [<bandwidth>
+ [<inbound average="int" [burst="int"] [peak="int"]/>]
+ [<outbound average="int" [burst="int"] [peak="int"]/>]
+ </bandwidth>]
</interface>
"""
iface = self.createXmlElem('interface', self.device, ['address'])
@@ -1270,6 +1274,20 @@
tune = iface.appendChildWithArgs('tune')
tune.appendChildWithArgs('sndbuf', text=self.sndbufParam)
+ if hasattr(self, 'inbound') or hasattr(self, 'outbound'):
+ bandwidth = self.createXmlElem('bandwidth', None)
+ # Inbound and Outbound traffic can be indipendently shaped.
+ if hasattr(self, 'inbound'):
+ bandwidth.appendChildWithArgs('inbound',
+ average=self.inbound['avg'],
+ burst=self.inbound.get('burst'),
+ peak=self.inbound.get('peak'))
+ if hasattr(self, 'outbound'):
+ bandwidth.appendChildWithArgs('outbound',
+ average=self.outbound['avg'],
+ burst=self.outbound.get('burst'),
+ peak=self.outbound.get('peak'))
+ iface.appendChild(bandwidth)
return iface
--
To view, visit http://gerrit.ovirt.org/15445
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iec7c61d2713270dc8e46ee01f155e2ad54c748a5
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Giuseppe Vallarelli <gvallare(a)redhat.com>
10 years, 12 months
Change in vdsm[master]: fix for after_vm_dehibernate hook not being called
by ahadas@redhat.com
Arik Hadas has uploaded a new change for review.
Change subject: fix for after_vm_dehibernate hook not being called
......................................................................
fix for after_vm_dehibernate hook not being called
Due to what seems to be a copy-paste or typo problem, the
after_vm_hibernate hook was called instead of after_vm_dehibernate
hook after the vm is being dehibernated. This patch correct that call.
Change-Id: I6851c1253efe2fc4a9fbf4568b930b598df45680
Signed-off-by: Arik Hadas <ahadas(a)redhat.com>
---
M vdsm/hooks.py
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/56/15656/1
diff --git a/vdsm/hooks.py b/vdsm/hooks.py
index f188956..ddb230a 100644
--- a/vdsm/hooks.py
+++ b/vdsm/hooks.py
@@ -192,7 +192,7 @@
def after_vm_dehibernate(domxml, vmconf={}):
- return _runHooksDir(domxml, 'after_vm_hibernate', vmconf=vmconf,
+ return _runHooksDir(domxml, 'after_vm_dehibernate', vmconf=vmconf,
raiseError=False)
--
To view, visit http://gerrit.ovirt.org/15656
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6851c1253efe2fc4a9fbf4568b930b598df45680
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <ahadas(a)redhat.com>
10 years, 12 months