Change in vdsm[master]: WIP - Avoid creation of fake templates.
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: WIP - Avoid creation of fake templates.
......................................................................
WIP - Avoid creation of fake templates.
Change-Id: I7ae6e455757f247bfc3d8e261d8f5cec25f8776a
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/image.py
M vdsm/storage/sp.py
2 files changed, 0 insertions(+), 45 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/80/8280/1
diff --git a/vdsm/storage/image.py b/vdsm/storage/image.py
index d004046..bb620ef 100644
--- a/vdsm/storage/image.py
+++ b/vdsm/storage/image.py
@@ -20,7 +20,6 @@
import os
import logging
-import threading
import uuid
from contextlib import contextmanager
@@ -65,7 +64,6 @@
Consist from chain of volumes.
"""
log = logging.getLogger('Storage.Image')
- _fakeTemplateLock = threading.Lock()
@classmethod
def createImageRollback(cls, taskObj, imageDir):
@@ -428,37 +426,6 @@
self.repoPath, destDom.sdUUID, sd.DOMAIN_IMAGES,
templateImage, volUUID), tLink)
- def createFakeTemplate(self, sdUUID, volParams):
- """
- Create fake template (relevant for Backup domain only)
- """
- with self._fakeTemplateLock:
- try:
- destDom = sdCache.produce(sdUUID)
- volclass = destDom.getVolumeClass()
- # Validate that the destination template exists and accessible
- volclass(self.repoPath, sdUUID, volParams['imgUUID'], volParams['volUUID'])
- except (se.VolumeDoesNotExist, se.ImagePathError):
- try:
- # Create fake parent volume
- destDom.createVolume(imgUUID=volParams['imgUUID'], size=volParams['size'],
- volFormat=volume.COW_FORMAT, preallocate=volume.SPARSE_VOL,
- diskType=volParams['disktype'], volUUID=volParams['volUUID'], desc="Fake volume",
- srcImgUUID=volume.BLANK_UUID, srcVolUUID=volume.BLANK_UUID)
-
- vol = destDom.produceVolume(imgUUID=volParams['imgUUID'], volUUID=volParams['volUUID'])
- # Mark fake volume as "FAKE"
- vol.setLegality(volume.FAKE_VOL)
- # Mark fake volume as shared
- vol.setShared()
- # Now we should re-link all hardlinks of this template in all VMs based on it
- self.__templateRelink(destDom, volParams['imgUUID'], volParams['volUUID'])
-
- self.log.debug("Succeeded to create fake image %s in domain %s", volParams['imgUUID'], destDom.sdUUID)
- except Exception:
- self.log.error("Failure to create fake image %s in domain %s", volParams['imgUUID'],
- destDom.sdUUID, exc_info=True)
-
def isLegal(self, sdUUID, imgUUID):
"""
Check correctness of the whole chain (excluding template)
@@ -502,7 +469,6 @@
self.log.error("Unexpected error", exc_info=True)
raise se.SourceImageActionError(imgUUID, srcSdUUID, str(e))
- fakeTemplate = False
pimg = volume.BLANK_UUID # standalone chain
# check if the chain is build above a template, or it is a standalone
pvol = srcChain[0].getParentVolume()
@@ -510,11 +476,6 @@
# find out parent volume parameters
volParams = pvol.getVolumeParams()
pimg = volParams['imgUUID'] # pimg == template image
- if destDom.isBackup():
- # FIXME: This workaround help as copy VM to the backup domain without its template
- # We will create fake template for future VM creation and mark it as FAKE volume
- # This situation is relevant for backup domain only
- fakeTemplate = True
@contextmanager
def justLogIt(img):
@@ -525,9 +486,6 @@
# In destination domain we need to lock image's template if exists
with rmanager.acquireResource(dstImageResourcesNamespace, pimg, rm.LockType.shared) \
if pimg != volume.BLANK_UUID else justLogIt(imgUUID):
- if fakeTemplate:
- self.createFakeTemplate(destDom.sdUUID, volParams)
-
dstChain = []
for srcVol in srcChain:
# Create the dst volume
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index 78fbe66..d3b7009 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -1828,10 +1828,7 @@
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):
"""
--
To view, visit http://gerrit.ovirt.org/8280
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7ae6e455757f247bfc3d8e261d8f5cec25f8776a
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
10 years, 1 month
Change in vdsm[master]: [WIP] Reduce the number of pvs calls using lvm.checkpvsblksi...
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: [WIP] Reduce the number of pvs calls using lvm.checkpvsblksize()
......................................................................
[WIP] Reduce the number of pvs calls using lvm.checkpvsblksize()
Change-Id: I778a22843392f2b1345718b3c02bd2f12200056b
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/blockSD.py
1 file changed, 3 insertions(+), 3 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/92/11692/1
diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py
index aa4059a..6a02f5a 100644
--- a/vdsm/storage/blockSD.py
+++ b/vdsm/storage/blockSD.py
@@ -503,10 +503,12 @@
except se.LogicalVolumeDoesNotExistError:
pass
- numOfPVs = len(lvm.listPVNames(vgName))
+ pvs = lvm.listPVNames(vgName)
+ numOfPVs = len(pvs)
if version in VERS_METADATA_LV and numOfPVs > MAX_PVS:
cls.log.debug("%d > %d", numOfPVs, MAX_PVS)
raise se.StorageDomainIsMadeFromTooManyPVs()
+ logBlkSize, phyBlkSize = lvm.checkpvsblksize(pvs)
# Create metadata service volume
metasize = metaSize(vgName)
@@ -548,8 +550,6 @@
md = LvBasedSDMetadata(vgName, sd.METADATA)
elif version in VERS_METADATA_TAG:
md = TagBasedSDMetadata(vgName)
-
- logBlkSize, phyBlkSize = lvm.getVGBlockSizes(vgName)
# create domain metadata
# FIXME : This is 99% like the metadata in file SD
--
To view, visit http://gerrit.ovirt.org/11692
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I778a22843392f2b1345718b3c02bd2f12200056b
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
10 years, 1 month
Change in vdsm[master]: [WIP] Fixing metadata writings using cmd_type_1.
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: [WIP] Fixing metadata writings using cmd_type_1.
......................................................................
[WIP] Fixing metadata writings using cmd_type_1.
Change-Id: I88b3ede4bd15a884bcd07cf4099f53d30aa98f84
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/blockSD.py
1 file changed, 13 insertions(+), 14 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/95/11695/1
diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py
index c688826..359a691 100644
--- a/vdsm/storage/blockSD.py
+++ b/vdsm/storage/blockSD.py
@@ -123,7 +123,6 @@
LVM_ENC_ESCAPE = re.compile("&(\d+)&")
-# Move to lvm
def lvmTagEncode(s):
return INVALID_CHARS.sub(lambda c: "&%s&" % ord(c.group()), s)
@@ -505,7 +504,6 @@
def makeChangeCmd(toRemove, toAdd):
changeCmd = [constants.EXT_LVM, "vgchange"]
- changeCmd.extend(lvm.LVM_NOBACKUP)
changeCmd.extend(("--config", cmdConf % filter))
for tag in toRemove:
changeCmd.extend(("--deltag", tag))
@@ -623,28 +621,23 @@
DMDK_PHYBLKSIZE: phyBlkSize,
}
- initialMetadata.update(mapping)
-
if version in VERS_METADATA_LV:
md = LvBasedSDMetadata(vgName, sd.METADATA)
md.update(initialMetadata)
#Replace unready tag
toRemove = (STORAGE_UNREADY_DOMAIN_TAG,)
toAdd = (STORAGE_DOMAIN_TAG,)
+ initialMetadata.update(mapping)
elif version in VERS_METADATA_TAG:
md = TagBasedSDMetadata(vgName)
#Add all tags here and remove the unready
- toRemove = tuple(VGTagMetadataRW.METADATA_TAG_PREFIX +
- lvmTagEncode(item) for item in initialMetadata)
- toRemove.append(STORAGE_UNREADY_DOMAIN_TAG)
- toAdd = tuple(VGTagMetadataRW.METADATA_TAG_PREFIX +
- lvmTagEncode(item) for item in initialMetadata)
+ toRemove = [STORAGE_UNREADY_DOMAIN_TAG]
+ toAdd = [VGTagMetadataRW.METADATA_TAG_PREFIX +
+ lvmTagEncode("%s=%s" % item)
+ for item in initialMetadata.items()]
+ toAdd.extend([lvmTagEncode("%s,%s" % (k, v))
+ for k, v in mapping.items()])
toAdd.append(STORAGE_DOMAIN_TAG)
-
- try:
- setInitialTags(toRemove, toAdd)
- except se.VolumeGroupReplaceTagError:
- raise se.VolumeGroupUninitialized(vgName)
if version in sd.DOM_SAFELEASE_VERS:
initClusterLock()
@@ -653,6 +646,12 @@
else:
cls.log.warning("Lock method for version %s unknown", version)
+ try:
+ setInitialTags(toRemove, toAdd)
+ except se.VolumeGroupReplaceTagError:
+ raise se.VolumeGroupUninitialized(vgName)
+
+ lvm.invalidateVG(vgName)
return None
def getReadDelay(self):
--
To view, visit http://gerrit.ovirt.org/11695
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I88b3ede4bd15a884bcd07cf4099f53d30aa98f84
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
Gerrit-Reviewer: Yeela Kaplan <ykaplan(a)redhat.com>
10 years, 1 month
Change in vdsm[master]: [WIP] createSD() and createStoragePool() explicit cmd_type_1...
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: [WIP] createSD() and createStoragePool() explicit cmd_type_1.
......................................................................
[WIP] createSD() and createStoragePool() explicit cmd_type_1.
TODO:
initSanLockLock
remove[StoragePool, SD, VG] should be type 1?
Change-Id: I1b9d533812718d29a01998934e22954cee650265
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/blockSD.py
M vdsm/storage/hsm.py
2 files changed, 88 insertions(+), 26 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/94/11694/1
diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py
index 6a02f5a..c688826 100644
--- a/vdsm/storage/blockSD.py
+++ b/vdsm/storage/blockSD.py
@@ -479,7 +479,65 @@
'vgUUID' - volume group UUID
'storageType' - NFS_DOMAIN, LOCALFS_DOMAIN, &etc.
'version' - DOMAIN_VERSIONS
+
+ This function intentionally bypasses the lvm cache sets since
+ uses a private configuration.
"""
+ def makeCreateCmd(lvSize, lvName):
+ createCmd = [constants.EXT_LVM, "lvcreate"]
+ createCmd.extend(("--config", cmdConf % filter))
+ createCmd.extend(("--contiguous", "y", "--size", "%sm" % lvSize))
+ createCmd.extend(("--name", lvName, vgName))
+ return createCmd
+
+ def createSpecialLvs():
+ for size, name in ((metaSize(vgName), sd.METADATA),
+ (sd.LEASES_SIZE, sd.LEASES),
+ (sd.IDS_SIZE, sd.IDS),
+ (sd.INBOX_SIZE, sd.INBOX),
+ (sd.OUTBOX_SIZE, sd.OUTBOX),
+ (MASTERLV_SIZE, MASTERLV)
+ ):
+ rc, out, err = misc.execCmd(makeCreateCmd(size, name),
+ sudo=True)
+ if rc != 0:
+ raise se.CannotCreateLogicalVolume(vgName, name)
+
+ def makeChangeCmd(toRemove, toAdd):
+ changeCmd = [constants.EXT_LVM, "vgchange"]
+ changeCmd.extend(lvm.LVM_NOBACKUP)
+ changeCmd.extend(("--config", cmdConf % filter))
+ for tag in toRemove:
+ changeCmd.extend(("--deltag", tag))
+ for tag in toAdd:
+ changeCmd.extend(("--addtag", tag))
+ changeCmd.append(vgName)
+ return changeCmd
+
+ def setInitialTags(toRemove, toAdd):
+ rc, out, err = misc.execCmd(makeChangeCmd(toRemove, toAdd),
+ sudo=True)
+ if rc != 0:
+ raise se.VolumeGroupReplaceTagError("vg:%s del:%s add:%s (%s)"
+ % (vgName,
+ ", ".join(toRemove),
+ ", ".join(toAdd),
+ err[-1]))
+
+ def initClusterLock():
+ lockUtilPath = config.get('irs', 'lock_util_path')
+ lockUtil = os.path.join(lockUtilPath, "safelease")
+ initCommand = [lockUtil, "release", "-f", lvm.lvPath(vgName,
+ sd.LEASES), "0"]
+ rc, out, err = misc.execCmd(initCommand, sudo=False,
+ cwd=lockUtilPath)
+ if rc != 0:
+ raise se.ClusterLockInitError("could not initialise spm lease"
+ "(%s): %s" % (rc, out))
+
+ def initSanLockLock():
+ pass
+
cls.log.info("sdUUID=%s domainName=%s domClass=%s vgUUID=%s "
"storageType=%s version=%s", sdUUID, domainName, domClass,
vgUUID, storageType, version)
@@ -510,9 +568,10 @@
raise se.StorageDomainIsMadeFromTooManyPVs()
logBlkSize, phyBlkSize = lvm.checkpvsblksize(pvs)
- # Create metadata service volume
- metasize = metaSize(vgName)
- lvm.createLV(vgName, sd.METADATA, "%s" % (metasize))
+ filter = 'filter = [ ' + '"a%' + " ".join(pvs) + '%", ' + '"r%.*%" ]'
+ cmdConf = lvm.LVMCONF_TEMPLATE.replace("locking_type=4",
+ "locking_type=1")
+ createSpecialLvs()
# Create the mapping right now so the index 0 is guaranteed
# to belong to the metadata volume. Since the metadata is at
# least SDMETADATA/METASIZE units, we know we can use the first
@@ -520,16 +579,8 @@
# pass metadata's dev to ensure it is the first mapping
mapping = cls.getMetaDataMapping(vgName)
- # Create the rest of the BlockSD internal volumes
- lvm.createLV(vgName, sd.LEASES, sd.LEASES_SIZE)
- lvm.createLV(vgName, sd.IDS, sd.IDS_SIZE)
- lvm.createLV(vgName, sd.INBOX, sd.INBOX_SIZE)
- lvm.createLV(vgName, sd.OUTBOX, sd.OUTBOX_SIZE)
- lvm.createLV(vgName, MASTERLV, MASTERLV_SIZE)
-
# Create VMS file system
_createVMSfs(os.path.join("/dev", vgName, MASTERLV))
-
lvm.deactivateLVs(vgName, MASTERLV)
path = lvm.lvPath(vgName, sd.METADATA)
@@ -545,11 +596,6 @@
raise
except se.StorageException:
raise se.VolumesZeroingError(path)
-
- if version in VERS_METADATA_LV:
- md = LvBasedSDMetadata(vgName, sd.METADATA)
- elif version in VERS_METADATA_TAG:
- md = TagBasedSDMetadata(vgName)
# create domain metadata
# FIXME : This is 99% like the metadata in file SD
@@ -579,20 +625,35 @@
initialMetadata.update(mapping)
- md.update(initialMetadata)
+ if version in VERS_METADATA_LV:
+ md = LvBasedSDMetadata(vgName, sd.METADATA)
+ md.update(initialMetadata)
+ #Replace unready tag
+ toRemove = (STORAGE_UNREADY_DOMAIN_TAG,)
+ toAdd = (STORAGE_DOMAIN_TAG,)
+ elif version in VERS_METADATA_TAG:
+ md = TagBasedSDMetadata(vgName)
+ #Add all tags here and remove the unready
+ toRemove = tuple(VGTagMetadataRW.METADATA_TAG_PREFIX +
+ lvmTagEncode(item) for item in initialMetadata)
+ toRemove.append(STORAGE_UNREADY_DOMAIN_TAG)
+ toAdd = tuple(VGTagMetadataRW.METADATA_TAG_PREFIX +
+ lvmTagEncode(item) for item in initialMetadata)
+ toAdd.append(STORAGE_DOMAIN_TAG)
- # Mark VG with Storage Domain Tag
try:
- lvm.replaceVGTag(vgName, STORAGE_UNREADY_DOMAIN_TAG,
- STORAGE_DOMAIN_TAG)
- except se.StorageException:
+ setInitialTags(toRemove, toAdd)
+ except se.VolumeGroupReplaceTagError:
raise se.VolumeGroupUninitialized(vgName)
- bsd = BlockStorageDomain(sdUUID)
+ if version in sd.DOM_SAFELEASE_VERS:
+ initClusterLock()
+ elif sd.DOM_SANLOCK_VERS:
+ initSanLockLock()
+ else:
+ cls.log.warning("Lock method for version %s unknown", version)
- bsd.initSPMlease()
-
- return bsd
+ return None
def getReadDelay(self):
t = time.time()
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index 7b03064..640e7bd 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -2445,7 +2445,8 @@
domVersion)
else:
raise se.StorageDomainTypeError(storageType)
- sdCache.manuallyAddDomain(newSD)
+ if newSD:
+ sdCache.manuallyAddDomain(newSD)
@public
def validateStorageDomain(self, sdUUID, options=None):
--
To view, visit http://gerrit.ovirt.org/11694
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1b9d533812718d29a01998934e22954cee650265
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
10 years, 1 month
Change in vdsm[master]: [WIP] Add cmd_type_1
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: [WIP] Add cmd_type_1
......................................................................
[WIP] Add cmd_type_1
Change-Id: I0c62d42936630132722974bcdedd619d13185cde
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/lvm.py
1 file changed, 20 insertions(+), 3 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/93/11693/1
diff --git a/vdsm/storage/lvm.py b/vdsm/storage/lvm.py
index 148a010..3d33ac8 100644
--- a/vdsm/storage/lvm.py
+++ b/vdsm/storage/lvm.py
@@ -147,6 +147,23 @@
return filt
+def _cmd_type_1(cmd, devices):
+ """
+ Use only for lvm cluster safe commands.
+
+ These are cmds that not change metadata of an existing VG.
+ _DON'T_ call this directly or indirectly.
+ """
+ filter = _buildFilter(devices)
+ conf = LVMCONF_TEMPLATE.replace("locking_type=4",
+ "locking_type=1") % filter
+ conf = conf.replace("\n", " ")
+ finalCmd = [constants.EXT_LVM, cmd[0], "--config", conf]
+ finalCmd.extend(cmd[1:])
+ rc, out, err = misc.execCmd(finalCmd, sudo=True)
+ return rc, out, err
+
+
def _buildConfig(devList):
flt = _buildFilter(chain(devList, USER_DEV_LIST))
conf = _current_lvmconf % flt
@@ -672,7 +689,7 @@
cmd.extend(("--metadatasize", metadatasize, "--metadatacopies", "2",
"--metadataignore", "y"))
cmd.extend(devices)
- rc, out, err = _lvminfo.cmd(cmd)
+ rc, out, err = _cmd_type_1(cmd)
return rc, out, err
@@ -884,7 +901,7 @@
# Activate the 1st PV metadata areas
cmd = ["pvchange", "--metadataignore", "n"]
cmd.append(pvs[0])
- rc, out, err = _lvminfo.cmd(cmd)
+ rc, out, err = _cmd_type_1(cmd, (pvs[0],))
if rc != 0:
raise se.PhysDevInitializationError(pvs[0])
@@ -892,7 +909,7 @@
if initialTag:
options.extend(("--addtag", initialTag))
cmd = ["vgcreate"] + options + [vgName] + pvs
- rc, out, err = _lvminfo.cmd(cmd)
+ rc, out, err = _cmd_type_1(cmd, pvs)
if rc == 0:
_lvminfo._invalidatepvs(pvs)
_lvminfo._invalidatevgs(vgName)
--
To view, visit http://gerrit.ovirt.org/11693
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0c62d42936630132722974bcdedd619d13185cde
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
10 years, 1 month
Change in vdsm[master]: [WIP] Public checkpvsblksize
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: [WIP] Public checkpvsblksize
......................................................................
[WIP] Public checkpvsblksize
Change-Id: I02d1565e39780cb0ce97caba7b44db8b191c0c35
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/lvm.py
1 file changed, 6 insertions(+), 4 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/91/11691/1
diff --git a/vdsm/storage/lvm.py b/vdsm/storage/lvm.py
index 8955657..148a010 100644
--- a/vdsm/storage/lvm.py
+++ b/vdsm/storage/lvm.py
@@ -878,7 +878,7 @@
def createVG(vgName, devices, initialTag, metadataSize, extentsize="128m",
force=False):
pvs = [_fqpvname(pdev) for pdev in _normalizeargs(devices)]
- _checkpvsblksize(pvs)
+ checkpvsblksize(pvs)
_initpvs(pvs, metadataSize, force)
# Activate the 1st PV metadata areas
@@ -927,7 +927,7 @@
def extendVG(vgName, devices, force):
pvs = [_fqpvname(pdev) for pdev in _normalizeargs(devices)]
- _checkpvsblksize(pvs, getVGBlockSizes(vgName))
+ checkpvsblksize(pvs, getVGBlockSizes(vgName))
vg = _lvminfo.getVg(vgName)
# Format extension PVs as all the other already in the VG
_initpvs(pvs, int(vg.vg_mda_size) / 2 ** 20, force)
@@ -967,7 +967,7 @@
return multipath.getDeviceBlockSizes(dev)
-def _checkpvsblksize(pvs, vgBlkSize=None):
+def checkpvsblksize(pvs, vgBlkSize=None):
for pv in pvs:
pvBlkSize = _getpvblksize(pv)
logPvBlkSize, phyPvBlkSize = pvBlkSize
@@ -987,12 +987,14 @@
if logPvBlkSize != vgBlkSize[0]:
raise se.VolumeGroupBlockSizeError(vgBlkSize, pvBlkSize)
+ return pvBlkSize
+
def checkVGBlockSizes(vgUUID, vgBlkSize=None):
pvs = listPVNames(vgUUID)
if not pvs:
raise se.VolumeGroupDoesNotExist("vg_uuid: %s" % vgUUID)
- _checkpvsblksize(pvs, vgBlkSize)
+ checkpvsblksize(pvs, vgBlkSize)
def getVGBlockSizes(vgUUID):
--
To view, visit http://gerrit.ovirt.org/11691
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I02d1565e39780cb0ce97caba7b44db8b191c0c35
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
10 years, 1 month
Change in vdsm[master]: check the syntaxs of optional parameters in json schema
by shaohef@linux.vnet.ibm.com
ShaoHe Feng has uploaded a new change for review.
Change subject: check the syntaxs of optional parameters in json schema
......................................................................
check the syntaxs of optional parameters in json schema
There are so many syntaxs error of optional parameters define in
json schema
This patch can both check the descrption errors of optional parameters
missing #optional and the define error of optional parameters missing *
Change-Id: I94f92459ee8787780a54a510b6f8cc074fb2a235
Signed-off-by: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
---
M vdsm_api/process-schema.py
1 file changed, 17 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/46/10446/1
diff --git a/vdsm_api/process-schema.py b/vdsm_api/process-schema.py
index 8244995..5db6966 100755
--- a/vdsm_api/process-schema.py
+++ b/vdsm_api/process-schema.py
@@ -22,6 +22,11 @@
import sys
import re
import vdsmapi
+try:
+ from collections import OrderedDict
+ OrderedDict # make pyflakes happy
+except ImportError:
+ from ordereddict import OrderedDict
html_escape_table = {
"&": "&",
@@ -143,6 +148,18 @@
symbol[mode][name] = desc
# Track the name in case there is are multiple lines to append
last_arg = name
+ # check optional parameters
+ if desc.startswith('#optional '):
+ assert ('*' + name in symbol['data'].keys()), \
+ ('Define of %s optional parameter error:\n\t%s should '
+ 'start with *' % (symbol['name'], name))
+ if isinstance(symbol['data'], OrderedDict):
+ if '*' + name in symbol['data'].keys():
+ assert desc.startswith('#optional '), \
+ ('Description of %s optional parameter error:\n\t'
+ 'The description of optional parameter "%s" '
+ 'should start with "#optional"' %
+ (symbol['name'], name))
else:
# Just append it to the last one we added
symbol[mode][last_arg] += ' ' + line
--
To view, visit http://gerrit.ovirt.org/10446
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I94f92459ee8787780a54a510b6f8cc074fb2a235
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
10 years, 1 month
Change in vdsm[master]: [WIP] Add new repository management code
by smizrahi@redhat.com
Saggi Mizrahi has uploaded a new change for review.
Change subject: [WIP] Add new repository management code
......................................................................
[WIP] Add new repository management code
Change-Id: Ib09c89cf982b475f45d26b2428fe05e2f4565dab
Signed-off-by: Saggi Mizrahi <smizrahi(a)redhat.com>
---
M tests/Makefile.am
A tests/imageMainuplatorTests.py
A tests/repositoryEngineTests.py
A vdsm/storage/imageRepository/engines/__init__.py
A vdsm/storage/imageRepository/engines/localfs/__init__.py
A vdsm/storage/imageRepository/imageManipulator.py
6 files changed, 1,339 insertions(+), 5 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/47/6247/1
--
To view, visit http://gerrit.ovirt.org/6247
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib09c89cf982b475f45d26b2428fe05e2f4565dab
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Saggi Mizrahi <smizrahi(a)redhat.com>
10 years, 2 months
Change in vdsm[master]: svdsm: Remove superfluous unlinks
by smizrahi@redhat.com
Saggi Mizrahi has uploaded a new change for review.
Change subject: svdsm: Remove superfluous unlinks
......................................................................
svdsm: Remove superfluous unlinks
This causes races and is generally unnecessary
Bug-Id: https://bugzilla.redhat.com/910005
Change-Id: I6c3e1968666a34fdfc4b9df8d8c320bcc82c47ca
Signed-off-by: Saggi Mizrahi <smizrahi(a)redhat.com>
---
M vdsm/supervdsm.py
M vdsm/supervdsmServer.py
2 files changed, 48 insertions(+), 49 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/89/11989/1
diff --git a/vdsm/supervdsm.py b/vdsm/supervdsm.py
index 10abae0..127dd78 100644
--- a/vdsm/supervdsm.py
+++ b/vdsm/supervdsm.py
@@ -112,10 +112,10 @@
return self._manager.open(*args, **kwargs)
def _cleanOldFiles(self):
- self._log.debug("Cleanning svdsm old files: %s, %s, %s",
+ self._log.debug("Cleanning svdsm old files: %s, %s",
self.pidfile, self.timestamp, self.address)
- for f in (self.pidfile, self.timestamp, self.address):
- utils.rmFile(f)
+ for f in (self.pidfile, self.timestamps):
+ utils.rmFile(str(f))
def _start(self):
self._authkey = str(uuid.uuid4())
@@ -194,7 +194,7 @@
def launch(self):
self._firstLaunch = False
self._start()
- utils.retry(self._connect, Exception, timeout=60)
+ utils.retry(self._connect, Exception, timeout=1)
def __getattr__(self, name):
return ProxyCaller(self, name)
diff --git a/vdsm/supervdsmServer.py b/vdsm/supervdsmServer.py
index 83a5803..21cf579 100755
--- a/vdsm/supervdsmServer.py
+++ b/vdsm/supervdsmServer.py
@@ -366,57 +366,56 @@
log = logging.getLogger("SuperVdsm.Server")
+ log.debug("Making sure I'm root")
+ if os.geteuid() != 0:
+ sys.exit(errno.EPERM)
+
+ log.debug("Parsing cmd args")
+ authkey, parentPid, pidfile, timestamp, address, uid = sys.argv[1:]
+
+ log.debug("Creating PID and TIMESTAMP files: %s, %s",
+ pidfile, timestamp)
+ spid = os.getpid()
+ with open(pidfile, "w") as f:
+ f.write(str(spid) + "\n")
+ with open(timestamp, "w") as f:
+ f.write(str(misc.getProcCtime(spid) + "\n"))
+
+ log.debug("Cleaning old socket %s", address)
+ zombieReaper.registerSignalHandler()
+
+ log.debug("Setting up keep alive thread")
+
+ monThread = threading.Thread(target=__pokeParent,
+ args=[int(parentPid), address, log])
+ monThread.setDaemon(True)
+ monThread.start()
+
try:
- log.debug("Making sure I'm root")
- if os.geteuid() != 0:
- sys.exit(errno.EPERM)
-
- log.debug("Parsing cmd args")
- authkey, parentPid, pidfile, timestamp, address, uid = sys.argv[1:]
-
- log.debug("Creating PID and TIMESTAMP files: %s, %s",
- pidfile, timestamp)
- spid = os.getpid()
- with open(pidfile, "w") as f:
- f.write(str(spid) + "\n")
- with open(timestamp, "w") as f:
- f.write(str(misc.getProcCtime(spid) + "\n"))
-
- log.debug("Cleaning old socket %s", address)
- if os.path.exists(address):
- os.unlink(address)
-
- zombieReaper.registerSignalHandler()
-
- log.debug("Setting up keep alive thread")
-
- monThread = threading.Thread(target=__pokeParent,
- args=[int(parentPid), address, log])
- monThread.setDaemon(True)
- monThread.start()
-
+ log.debug("Creating remote object manager")
try:
- log.debug("Creating remote object manager")
- manager = _SuperVdsmManager(address=address, authkey=authkey)
- manager.register('instance', callable=_SuperVdsm)
+ os.unlink(address)
+ except (OSError, IOError) as e:
+ if e.errno != errno.ENOENT:
+ raise
- server = manager.get_server()
- servThread = threading.Thread(target=server.serve_forever)
- servThread.setDaemon(True)
- servThread.start()
+ manager = _SuperVdsmManager(address=address, authkey=authkey)
+ manager.register('instance', callable=_SuperVdsm)
- for f in (address, timestamp, pidfile):
- chown(f, int(uid), METADATA_GROUP)
+ server = manager.get_server()
+ servThread = threading.Thread(target=server.serve_forever)
+ servThread.setDaemon(True)
+ servThread.start()
- log.debug("Started serving super vdsm object")
+ for f in (address, timestamp, pidfile):
+ chown(f, int(uid), METADATA_GROUP)
- # Python bug of thread.join() will block signal
- # http://bugs.python.org/issue1167930
- while servThread.isAlive():
- servThread.join(5)
- finally:
- if os.path.exists(address):
- utils.rmFile(address)
+ log.debug("Started serving super vdsm object")
+
+ # Python bug of thread.join() will block signal
+ # http://bugs.python.org/issue1167930
+ while servThread.isAlive():
+ servThread.join(5)
except Exception:
log.error("Could not start Super Vdsm", exc_info=True)
--
To view, visit http://gerrit.ovirt.org/11989
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6c3e1968666a34fdfc4b9df8d8c320bcc82c47ca
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Saggi Mizrahi <smizrahi(a)redhat.com>
10 years, 2 months
Change in vdsm[master]: Add create operation to qemu-img
by smizrahi@redhat.com
Saggi Mizrahi has uploaded a new change for review.
Change subject: Add create operation to qemu-img
......................................................................
Add create operation to qemu-img
Change-Id: I078afcb0899792805584fc56832747d36908f18b
Signed-off-by: Saggi Mizrahi <smizrahi(a)redhat.com>
---
M vdsm/qemuImg.py
1 file changed, 29 insertions(+), 5 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/45/6245/1
--
To view, visit http://gerrit.ovirt.org/6245
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I078afcb0899792805584fc56832747d36908f18b
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Saggi Mizrahi <smizrahi(a)redhat.com>
10 years, 2 months