Change in vdsm[master]: Fix the new lv_name field for the new lvm lib.
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: Fix the new lv_name field for the new lvm lib.
......................................................................
Fix the new lv_name field for the new lvm lib.
This is a hotfix, more elegant version is comming.
The use of pv_name is fully intentional.
Change-Id: I988b72af48bc5024f410a0a4296d553d352c8440
---
M vdsm/storage/lvm.py
1 file changed, 5 insertions(+), 3 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/52/2952/1
--
To view, visit http://gerrit.ovirt.org/2952
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I988b72af48bc5024f410a0a4296d553d352c8440
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
10 years, 9 months
Change in vdsm[master]: Internal volumes must be RO in domain version 2
by Federico Simoncelli
Federico Simoncelli has uploaded a new change for review.
Change subject: Internal volumes must be RO in domain version 2
......................................................................
Internal volumes must be RO in domain version 2
Change-Id: I6fa99971390d3e26ff9c65cb883e1a369bd626d7
---
M vdsm/storage/volume.py
1 file changed, 9 insertions(+), 3 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/86/2786/1
--
To view, visit http://gerrit.ovirt.org/2786
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6fa99971390d3e26ff9c65cb883e1a369bd626d7
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Federico Simoncelli <fsimonce(a)redhat.com>
10 years, 9 months
Change in vdsm[master]: Add syncImage to copy an image subchain
by Federico Simoncelli
Federico Simoncelli has uploaded a new change for review.
Change subject: Add syncImage to copy an image subchain
......................................................................
Add syncImage to copy an image subchain
Change-Id: I9ec8ec97536099f4f73b7d9a72956c873908d04d
---
M vdsm/API.py
M vdsm/BindingXMLRPC.py
M vdsm/storage/hsm.py
M vdsm/storage/sp.py
4 files changed, 71 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/18/3218/1
--
To view, visit http://gerrit.ovirt.org/3218
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9ec8ec97536099f4f73b7d9a72956c873908d04d
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Federico Simoncelli <fsimonce(a)redhat.com>
10 years, 9 months
Change in vdsm[master]: BZ#788640 - Avoid race between several concurrently running ...
by Igor Lvovsky
Igor Lvovsky has uploaded a new change for review.
Change subject: BZ#788640 - Avoid race between several concurrently running merges.
......................................................................
BZ#788640 - Avoid race between several concurrently running merges.
Merge snapshots shouldn't run on template's images.
Looking for volumes children in merged image only instead of a whole domain.
Change-Id: I9c04b343781c98a852f7de794a32c7db8e863847
---
M vdsm/storage/blockVolume.py
M vdsm/storage/fileVolume.py
M vdsm/storage/image.py
3 files changed, 36 insertions(+), 4 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/57/2757/1
--
To view, visit http://gerrit.ovirt.org/2757
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9c04b343781c98a852f7de794a32c7db8e863847
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Igor Lvovsky <ilvovsky(a)redhat.com>
10 years, 9 months
Change in vdsm[master]: Do not validate image during the move operation
by Igor Lvovsky
Igor Lvovsky has uploaded a new change for review.
Change subject: Do not validate image during the move operation
......................................................................
Do not validate image during the move operation
Change-Id: I8c470719c58eef34cf972e379d96b80e379066aa
---
M vdsm/storage/hsm.py
M vdsm/storage/image.py
M vdsm/storage/sp.py
3 files changed, 0 insertions(+), 40 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/56/2756/1
--
To view, visit http://gerrit.ovirt.org/2756
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8c470719c58eef34cf972e379d96b80e379066aa
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Igor Lvovsky <ilvovsky(a)redhat.com>
10 years, 9 months
Change in vdsm[master]: [WIP: REVIEW ONLY] Added Gluster file system management supp...
by barumuga@redhat.com
Hello Timothy Asir, Saggi Mizrahi, Dan Kenigsberg,
I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/2808
to review the following change.
Change subject: [WIP: REVIEW ONLY] Added Gluster file system management support.
......................................................................
[WIP: REVIEW ONLY] Added Gluster file system management support.
Verbs added into vdsm are
glusterVolumesList,
glusterVolumeCreate,
glusterVolumeStart,
glusterVolumeStop,
glusterVolumeDelete,
glusterVolumeSet,
glusterVolumeBrickAdd,
glusterVolumeRebalanceStart,
glusterVolumeRebalanceStop,
glusterVolumeRebalanceStatus,
glusterVolumeReplaceBrickStart,
glusterVolumeReplaceBrickAbort,
glusterVolumeReplaceBrickPause,
glusterVolumeReplaceBrickStatus,
glusterVolumeReplaceBrickCommit,
glusterVolumeRemoveBrickStart,
glusterVolumeRemoveBrickPause,
glusterVolumeRemoveBrickAbort,
glusterVolumeRemoveBrickStatus,
glusterVolumeRemoveBrickCommit,
glusterVolumeRemoveBrickForce,
glusterHostAdd,
glusterHostRemove,
glusterHostsList,
glusterDisksList
Change-Id: Ibd51bec292991f7abdcacf3ba747c9662f660f51
Signed-off-by: Timothy Asir <tjeyasin(a)redhat.com>
Signed-off-by: Bala.FA <barumuga(a)redhat.com>
---
M configure.ac
M vdsm.spec.in
M vdsm/BindingXMLRPC.py
M vdsm/Makefile.am
M vdsm/clientIF.py
A vdsm/gluster/Makefile.am
A vdsm/gluster/__init__.py.in
A vdsm/gluster/gluster_api.py
A vdsm/gluster/gluster_binding.py
A vdsm/gluster/gluster_cli.py
A vdsm/gluster/gluster_exception.py
A vdsm/gluster/gluster_utils.py
M vdsm_cli/Makefile.am
A vdsm_cli/gluster_extension.py
M vdsm_cli/vdsClient.py
15 files changed, 1,824 insertions(+), 2 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/08/2808/1
--
To view, visit http://gerrit.ovirt.org/2808
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibd51bec292991f7abdcacf3ba747c9662f660f51
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Bala.FA <barumuga(a)redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Saggi Mizrahi <smizrahi(a)redhat.com>
Gerrit-Reviewer: Timothy Asir <tjeyasin(a)redhat.com>
10 years, 10 months
Change in vdsm[master]: Added gluster tool support in supervdsm.
by barumuga@redhat.com
Hello Saggi Mizrahi, Dan Kenigsberg,
I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/2797
to review the following change.
Change subject: Added gluster tool support in supervdsm.
......................................................................
Added gluster tool support in supervdsm.
Now supervdsm has execGluster function helps to run gluster commands.
Change-Id: I2faa261a3c44cf84af14102bdf6479287435793b
Signed-off-by: Bala.FA <barumuga(a)redhat.com>
---
M configure.ac
M vdsm.spec.in
M vdsm/Makefile.am
M vdsm/constants.py.in
A vdsm/gluster.py
M vdsm/supervdsmServer.py
6 files changed, 34 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/97/2797/1
--
To view, visit http://gerrit.ovirt.org/2797
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2faa261a3c44cf84af14102bdf6479287435793b
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Bala.FA <barumuga(a)redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Saggi Mizrahi <smizrahi(a)redhat.com>
10 years, 10 months
[NEW PATCH] Change getChain() to return dictionary with chain itself and its template. (via gerrit-bot)
by Igor Lvovsky
New patch submitted by Igor Lvovsky (ilvovsky(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/692
commit 3a09f874889cb372ee84b04a234f7b653458e26f
Author: Igor Lvovsky <ilvovsky(a)redhat.com>
Date: Tue Jul 12 15:18:45 2011 +0300
Change getChain() to return dictionary with chain itself and its template.
This change will avoid unneeded produceVolume and improve
behaviour of different flows.
Change-Id: Ife46d592171aedea087e0d6462b735cd7e0d75e0
diff --git a/vdsm/storage/image.py b/vdsm/storage/image.py
index 1c70a34..102ea6c 100644
--- a/vdsm/storage/image.py
+++ b/vdsm/storage/image.py
@@ -104,7 +104,7 @@ class Image:
# 1. Remove template's image: Create 'fake' template instead of deleted one
# 2. Remove regular image: Remove parent-'fake' template if nobody need it already
try:
- pvol = self.getTemplate(sdUUID=sdUUID, imgUUID=imgUUID)
+ pvol = self.getChain(sdUUID, imgUUID)['template']
# 1. If we required to delete template's image that have VMs
# based on it, we should create similar 'fake' template instead
if pvol:
@@ -269,17 +269,16 @@ class Image:
return newImgUUID
- def __chainSizeCalc(self, sdUUID, imgUUID, volUUID, size):
+ def __chainSizeCalc(self, sdUUID, imgUUID, size):
"""
Compute an estimate of the whole chain size
using the sum of the actual size of the chain's volumes
"""
- chain = self.getChain(sdUUID, imgUUID, volUUID)
+ chainDict = self.getChain(sdUUID, imgUUID)
newsize = 0
- template = chain[0].getParentVolume()
- if template:
- newsize = template.getVolumeSize()
- for vol in chain:
+ if chainDict['template']:
+ newsize = chainDict['template'].getVolumeSize()
+ for vol in chainDict['chain']:
newsize += vol.getVolumeSize()
if newsize > size:
newsize = size
@@ -301,12 +300,14 @@ class Image:
newsize = int(newsize * 1.1) # allocate %10 more for cow metadata
return newsize
- def getChain(self, sdUUID, imgUUID, volUUID=None):
+ def getChain(self, sdUUID, imgUUID):
"""
- Return the chain of volumes of image as a sorted list
- (not including a shared base (template) if any)
+ Return the dictionary with chain of volumes of image as a sorted list
+ (not including a shared base (template)) and the template if any
"""
- chain = []
+ # 'chain' - chain of volumes of image as a sorted list
+ # 'template' - shared base (template) if any
+ chainDict = {'chain':[], 'template':None}
# Find all volumes of image
volclass = SDF.produce(sdUUID).getVolumeClass()
uuidlist = volclass.getImageVolumes(self.repoPath, sdUUID, imgUUID)
@@ -316,14 +317,13 @@ class Image:
srcVol = volclass(self.repoPath, sdUUID, imgUUID, uuidlist[0])
# For template image include only one volume (template itself)
if len(uuidlist) == 1 and srcVol.isShared():
- return [srcVol]
+ return {'chain':[srcVol], 'template':srcVol}
# find the leaf
for vol in uuidlist:
srcVol = volclass(self.repoPath, sdUUID, imgUUID, vol)
if srcVol.isLeaf():
- if not volUUID or volUUID == srcVol.volUUID:
- break
+ break
srcVol = None
if not srcVol:
@@ -332,38 +332,25 @@ class Image:
# Build up the sorted (parent->child) chain
while not srcVol.isShared():
- chain.insert(0, srcVol)
+ chainDict['chain'].insert(0, srcVol)
if srcVol.getParent() == volume.BLANK_UUID:
break
srcVol = srcVol.getParentVolume()
- self.log.info("sdUUID=%s imgUUID=%s chain=%s ", sdUUID, imgUUID, str(chain))
- return chain
+ if srcVol.isShared():
+ chainDict['template'] = srcVol
- def getTemplate(self, sdUUID, imgUUID):
- """
- Return template of the image
- """
- tmpl = None
- # Find all volumes of image (excluding template)
- chain = self.getChain(sdUUID, imgUUID)
- # check if the chain is build above a template, or it is a standalone
- pvol = chain[0].getParentVolume()
- if pvol:
- tmpl = pvol
- elif chain[0].isShared():
- tmpl = chain[0]
-
- return tmpl
+ self.log.info("sdUUID=%s imgUUID=%s chainDict=%s ", sdUUID, imgUUID, str(chainDict))
+ return chainDict
def validate(self, srcSdUUID, dstSdUUID, imgUUID, op=MOVE_OP):
"""
Validate template on destination domain
"""
- # Find all volumes of source image
- chain = self.getChain(srcSdUUID, imgUUID)
- leafVol = chain[-1]
srcDom = SDF.produce(srcSdUUID)
+ # Find all volumes of source image
+ chainDict = self.getChain(srcSdUUID, imgUUID)
+ leafVol = chainDict['chain'][-1]
# Avoid move template's image if there is a VM based on it (except 'Backup' domain)
if op == MOVE_OP and leafVol.isShared() and not srcDom.isBackup():
chList = leafVol.getAllChildrenList(self.repoPath, srcSdUUID, imgUUID, leafVol.volUUID)
@@ -371,18 +358,16 @@ class Image:
raise se.MoveTemplateImageError(imgUUID)
# check if the chain is build above a template, or it is a standalone
- pvol = chain[0].getParentVolume()
+ pvol = chainDict['template']
if pvol: # this is a shared template based chain
- if not pvol.isShared():
- raise se.ImageIsNotLegalChain("Base image parent vol %s is not shared" % pvol.volUUID)
pimg = pvol.getImage() # pimg == template image
try:
volclass = SDF.produce(dstSdUUID).getVolumeClass()
# Validate that the destination template exists and accessible
volclass(self.repoPath, dstSdUUID, pimg, pvol.volUUID)
- except se.StorageException, e:
- self.log.error("Unexpected error", exc_info=True)
- raise se.CouldNotValideTemplateOnTargetDomain("Template %s Destination domain %s: %s" % (pimg, dstSdUUID, str(e)))
+ except se.StorageException:
+ self.log.error("Cannot validate template %s on target domain %s", pimg, dstSdUUID, exc_info=True)
+ raise se.CouldNotValideTemplateOnTargetDomain()
def __templateRelink(self, destDom, imgUUID, volUUID):
"""
@@ -473,20 +458,15 @@ class Image:
def _createTargetImage(self, destDom, srcSdUUID, imgUUID):
# Before actual data copying we need perform several operation
# such as: create all volumes, create fake template if needed, ...
- try:
- # Find all volumes of source image
- srcChain = self.getChain(srcSdUUID, imgUUID)
- except se.StorageException:
- self.log.error("Unexpected error", exc_info=True)
- raise
- except Exception, e:
- self.log.error("Unexpected error", exc_info=True)
- raise se.SourceImageActionError(imgUUID, srcSdUUID, str(e))
+
+ # Find all volumes of source image
+ srcChainDict = self.getChain(srcSdUUID, imgUUID)
+ srcChain = srcChainDict['chain']
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()
+ pvol = srcChainDict['template']
if pvol:
# find out parent volume parameters
volParams = pvol.getVolumeParams()
@@ -686,11 +666,9 @@ class Image:
"""
if not self.isLegal(sdUUID, imgUUID):
raise se.ImageIsNotLegalChain(imgUUID)
- chain = self.getChain(sdUUID, imgUUID)
- # check if the chain is build above a template, or it is a standalone
- pvol = chain[0].getParentVolume()
- if pvol:
- if not pvol.isLegal() or pvol.isFake():
+ chainDict = self.getChain(sdUUID, imgUUID)
+ if chainDict['template']:
+ if not chainDict['template'].isLegal() or chainDict['template'].isFake():
raise se.ImageIsNotLegalChain(imgUUID)
def copy(self, sdUUID, vmUUID, srcImgUUID, srcVolUUID, dstImgUUID, dstVolUUID,
@@ -735,8 +713,7 @@ class Image:
# using the sum of the actual size of the chain's volumes
if volParams['volFormat'] != volume.COW_FORMAT or volParams['prealloc'] != volume.SPARSE_VOL:
raise se.IncorrectFormat(self)
- volParams['apparentsize'] = self.__chainSizeCalc(sdUUID, srcImgUUID,
- srcVolUUID, volParams['size'])
+ volParams['apparentsize'] = self.__chainSizeCalc(sdUUID, srcImgUUID, volParams['size'])
# Find out dest volume parameters
if preallocate in [volume.PREALLOCATED_VOL, volume.SPARSE_VOL]:
diff --git a/vdsm/storage/resourceFactories.py b/vdsm/storage/resourceFactories.py
index ce3ec70..07df0f0 100644
--- a/vdsm/storage/resourceFactories.py
+++ b/vdsm/storage/resourceFactories.py
@@ -106,20 +106,18 @@ class ImageResourceFactory(rm.SimpleResourceFactory):
# Get the list of the volumes
repoPath = os.path.join(self.storage_repository, dom.getPools()[0])
try:
- chain = image.Image(repoPath).getChain(sdUUID=self.sdUUID, imgUUID=resourceName)
+ chainDict = image.Image(repoPath).getChain(sdUUID=self.sdUUID, imgUUID=resourceName)
+ chain = chainDict['chain']
except se.ImageDoesNotExistInSD:
log.debug("Image %s does not exist in domain %s", resourceName, self.sdUUID)
return []
- # check if the chain is build above a template, or it is a standalone
- pvol = chain[0].getParentVolume()
- if pvol:
- template = pvol.volUUID
- elif chain[0].isShared():
- # Image of template itself,
- # with no other volumes in chain
- template = chain[0].volUUID
- del chain[:]
+ # Image of template itself,
+ # with no other volumes in chain
+ if chainDict['template']:
+ template = chainDict['template'].volUUID
+ if chainDict['template'] in chain:
+ del chain[:]
volUUIDChain = [vol.volUUID for vol in chain]
volUUIDChain.sort()
10 years, 10 months
Change in vdsm[master]: bootstrapping: avoid usage of tmp folder
by dfediuck@redhat.com
Doron Fediuck has uploaded a new change for review.
Change subject: bootstrapping: avoid usage of tmp folder
......................................................................
bootstrapping: avoid usage of tmp folder
This patch changes hard-coded tmp path elements, so the scripts
may be used from a different location. Once invoked by the engine-core
from an ad-hoc folder, the bootstrapping scripts should support
working on that folder. This is mainly referring to imports,
certificate files and log files.
Change-Id: I1b5df6dd0b5ff0bdf648cd74d160384b86e5bbf7
---
M vds_bootstrap/vds_bootstrap.py
M vds_bootstrap/vds_bootstrap_complete.py
M vdsm_reg/deployUtil.py.in
3 files changed, 35 insertions(+), 32 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/77/2277/1
--
To view, visit http://gerrit.ovirt.org/2277
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1b5df6dd0b5ff0bdf648cd74d160384b86e5bbf7
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Doron Fediuck <dfediuck(a)redhat.com>
10 years, 10 months
Change in vdsm[master]: Add the REST API bindings
by agl@us.ibm.com
Adam Litke has uploaded a new change for review.
Change subject: Add the REST API bindings
......................................................................
Add the REST API bindings
Conflicts:
vdsm/clientIF.py
Change-Id: I8b914f7ad82fee8d9e7e3ce6847ffe4cda374a56
---
M configure.ac
M vdsm.spec.in
M vdsm/BindingXMLRPC.py
M vdsm/Makefile.am
M vdsm/clientIF.py
M vdsm/config.py.in
A vdsm/rest/BindingREST.py
A vdsm/rest/Controller.py
A vdsm/rest/Dispatcher.py
A vdsm/rest/Makefile.am
A vdsm/rest/Store/LocalDB.py
A vdsm/rest/Store/Makefile.am
A vdsm/rest/Store/StorageDriver.py
A vdsm/rest/Store/__init__.py
A vdsm/rest/__init__.py
A vdsm/rest/templates/Makefile.am
A vdsm/rest/templates/image.json.x
A vdsm/rest/templates/images.json.x
A vdsm/rest/templates/root.json.x
A vdsm/rest/templates/storageconnection.json.x
A vdsm/rest/templates/storageconnections.json.x
A vdsm/rest/templates/storagedomain.json.x
A vdsm/rest/templates/storagedomains.json.x
A vdsm/rest/templates/storagepool.json.x
A vdsm/rest/templates/storagepools.json.x
A vdsm/rest/templates/task.json.x
A vdsm/rest/templates/tasks.json.x
A vdsm/rest/templates/vm.json.x
A vdsm/rest/templates/vmdrive.json.x
A vdsm/rest/templates/vmdrives.json.x
A vdsm/rest/templates/vms.json.x
A vdsm/rest/templates/volume.json.x
A vdsm/rest/templates/volumes.json.x
33 files changed, 1,740 insertions(+), 16 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/21/2021/1
--
To view, visit http://gerrit.ovirt.org/2021
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8b914f7ad82fee8d9e7e3ce6847ffe4cda374a56
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Adam Litke <agl(a)us.ibm.com>
10 years, 10 months