Change in vdsm[master]: adding StorageDomain.removeVmData()
laravot at redhat.com
laravot at redhat.com
Thu Feb 25 16:35:20 UTC 2016
Liron Aravot has uploaded a new change for review.
Change subject: adding StorageDomain.removeVmData()
......................................................................
adding StorageDomain.removeVmData()
Change-Id: Ic964ac5c9cb57df881b895356a203529ab2a171a
Signed-off-by: laravot at redhat.com <laravot at redhat.com>
---
M client/vdsClient.py
M vdsm/API.py
M vdsm/rpc/BindingXMLRPC.py
M vdsm/rpc/vdsmapi-schema.json
M vdsm/storage/hsm.py
M vdsm/storage/sp.py
6 files changed, 90 insertions(+), 10 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/03/43103/2
diff --git a/client/vdsClient.py b/client/vdsClient.py
index 9c42228..2ddb536 100755
--- a/client/vdsClient.py
+++ b/client/vdsClient.py
@@ -978,6 +978,15 @@
return res['status']['code'], res['status']['message']
return 0, ''
+ def removeStorageDomainVmData(self, args):
+ spUUID = args[0]
+ vmUUID = args[1]
+ sdUUID = args[2]
+ res = self.s.removeStorageDomainVmData(sdUUID, spUUID, vmUUID)
+ if res['status']['code']:
+ return res['status']['code'], res['status']['message']
+ return 0, ''
+
def _parseDomainsMap(self, domMapString):
"""
Parse domains map string: "sdUUID1=status1,sdUUID2=status2,..."
diff --git a/vdsm/API.py b/vdsm/API.py
index 73f1a1f..0748598 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -1062,6 +1062,10 @@
return self._irs.updateStorageDomainVmData(self._UUID, storagepoolID,
vmID, vmData)
+ def removeVMData(self, storagepoolID, vmID):
+ return self._irs.removeStorageDomainVmData(self._UUID, storagepoolID,
+ vmID)
+
def validate(self):
return self._irs.validateStorageDomain(self._UUID)
diff --git a/vdsm/rpc/BindingXMLRPC.py b/vdsm/rpc/BindingXMLRPC.py
index 0ab159f..d227d7f 100644
--- a/vdsm/rpc/BindingXMLRPC.py
+++ b/vdsm/rpc/BindingXMLRPC.py
@@ -644,6 +644,10 @@
domain = API.StorageDomain(sdUUID)
return domain.updateVMData(spUUID, vmUUID, vmData)
+ def domainRemoveVMData(self, sdUUID, spUUID, vmUUID):
+ domain = API.StorageDomain(sdUUID)
+ return domain.removeVMData(spUUID, vmUUID)
+
def domainDetachAnyStoragePoolHsm(self, sdUUID, hostID):
domain = API.StorageDomain(sdUUID)
return domain.detachAnyStoragePoolHsm(sdUUID, hostID)
@@ -1106,7 +1110,8 @@
(self.domainGetBackedUpVmsInfo,
'getStorageDomainBackedUpVmsInfo'),
(self.domainActivateHsm, 'activateStorageDomainHsm'),
- (self.domainUpdateVMData, 'updateStorageDomainVmData'))
+ (self.domainUpdateVMData, 'updateStorageDomainVmData'),
+ (self.domainRemoveVMData, 'removeStorageDomainVmData'))
def getIrsMethods(self):
return ((self.domainActivate, 'activateStorageDomain'),
diff --git a/vdsm/rpc/vdsmapi-schema.json b/vdsm/rpc/vdsmapi-schema.json
index 2173ac2..dee5e09 100644
--- a/vdsm/rpc/vdsmapi-schema.json
+++ b/vdsm/rpc/vdsmapi-schema.json
@@ -5051,6 +5051,23 @@
'data': {'storagedomainID': 'UUID', 'storagepoolID': 'UUID',
'vmID': 'UUID', 'vmData' : 'str'}}
+##
+# @StorageDomain.removeVMData:
+#
+# Remove a previously saved virtual machine definitio from a backup domain.
+#
+# @storagedomainID: The backup Storage Domain id
+#
+# @storagepoolID: The UUID of the Storage Pool
+#
+# @vmUUID: The id of the VM
+#
+# Since: 4.18.0
+##
+{'command': {'class': 'StorageDomain', 'name': 'removeVMData'},
+ 'data': {'storagedomainID': 'UUID', 'storagepoolID': 'UUID',
+ 'vmUUID': 'UUID'}}
+
##
# @StorageDomainCreateArgumentsBlock:
@@ -6192,6 +6209,24 @@
'data': {'storagepoolID': 'UUID', 'vmUUID': 'UUID',
'*storagedomainID': 'UUID'}}
+
+##
+# @StoragePool.removeVM:
+#
+# Remove a previously saved virtual machine definition.
+#
+# @storagepoolID: The UUID of the Storage Pool
+#
+# @vmUUID: Remove the saved definition of the VM with this UUID
+#
+# @storagedomainID: #optional The Storage Domain where the VM is stored
+#
+# Since: 4.10.0
+##
+{'command': {'class': 'StoragePool', 'name': 'removeVM'},
+ 'data': {'storagepoolID': 'UUID', 'vmUUID': 'UUID',
+ '*storagedomainID': 'UUID'}}
+
## Category: @Task ############################################################
##
# @Task:
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index 8302a52..346544a 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -1490,8 +1490,18 @@
pool = self._prepareUpdateVM(spUUID, sdUUID)
pool.updateVMHSM(sdUUID, vmUUID, vmData)
+ def _prepareRemoveVm(self, spUUID, sdUUID, vmUUID):
+ vars.task.getSharedLock(STORAGE, spUUID)
+ pool = self.getPool(spUUID)
+ if not sdUUID or sdUUID == sd.BLANK_UUID:
+ sdUUID = pool.masterDomain.sdUUID
+
+ vars.task.getSharedLock(STORAGE, "vms_" + sdUUID)
+ vars.task.getExclusiveLock(STORAGE, "vms_%s_%s" % (vmUUID, sdUUID))
+ return pool
+
@public
- def removeVM(self, spUUID, vmUUID, sdUUID=None, options=None):
+ def removeVM(self, spUUID, sdUUID, vmUUID):
"""
Removes a VM list from a storage pool or from a Backup domain.
@@ -1505,16 +1515,31 @@
:type sdUUID: UUID
:param options: ?
"""
- vars.task.getSharedLock(STORAGE, spUUID)
- pool = self.getPool(spUUID)
- if not sdUUID or sdUUID == sd.BLANK_UUID:
- sdUUID = pool.masterDomain.sdUUID
-
- vars.task.getSharedLock(STORAGE, "vms_" + sdUUID)
- vars.task.getExclusiveLock(STORAGE, "vms_%s_%s" % (vmUUID, sdUUID))
+ pool = self._prepareRemoveVm(spUUID, sdUUID, vmUUID)
pool.removeVM(vmUUID=vmUUID, sdUUID=sdUUID)
@public
+ def removeStorageDomainVmData(self, sdUUID, spUUID, vmUUID):
+ """
+ Updates a VM in a Backup domain.
+ Creates the VM data file if it does not exist.
+
+ :param spUUID: The UUID of the storage pool that the target domain
+ is attached to.
+ :type spUUID: UUID
+ :param sdUUID: The UUID of the backup domain you want to update the vm
+ data in.
+ :type sdUUID: UUID
+ :param vmUUID: The UUID of the vm whose data is being updated.
+ :type vm: UUID
+ :param vmData: The updated vm data.
+ :type vmData: str
+ """
+ self.validateBackupDom(sdUUID)
+ pool = self._prepareRemoveVm(spUUID, sdUUID)
+ pool.removeVMHsm(sdUUID, vmUUID)
+
+ @public
def getVmsList(self, spUUID, sdUUID=None, options=None):
"""
Gets a list of VMs from the pool.
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index 58de8ac..a8c3d47 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -1398,11 +1398,13 @@
self._removeVM(vmUUID, sdUUID)
@unsecured
- def removeVMHsm(self, vmUUID, sdUUID):
+ def removeVMHsm(self, sdUUID, vmUUID):
"""
Remove VM.
'vmUUID' - Virtual machine UUID
+ 'sdUUID' - The storage domain id
"""
+ self.validateNoSpm()
self.validatePoolSD(sdUUID)
self._removeVM(vmUUID, sdUUID)
--
To view, visit https://gerrit.ovirt.org/43103
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic964ac5c9cb57df881b895356a203529ab2a171a
Gerrit-PatchSet: 2
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Liron Aravot <laravot at redhat.com>
Gerrit-Reviewer: Jenkins CI RO
Gerrit-Reviewer: Liron Aravot <laravot at redhat.com>
Gerrit-Reviewer: gerrit-hooks <automation at ovirt.org>
More information about the vdsm-patches
mailing list