Change in vdsm[master]: janitorial: vm: switch to response.error()
fromani at redhat.com
fromani at redhat.com
Mon Mar 2 10:25:18 UTC 2015
Francesco Romani has uploaded a new change for review.
Change subject: janitorial: vm: switch to response.error()
......................................................................
janitorial: vm: switch to response.error()
response.error() offers a nicer and cleaner
way to report error responses instead of the bare
errCode['something'], even when we are fine with
the default generic message.
This patch makes use of response.error() all across
vm.py.
Change-Id: I3825faf7a144ef8973dee3cb9f9f0e52fabfc039
Signed-off-by: Francesco Romani <fromani at redhat.com>
---
M vdsm/virt/vm.py
1 file changed, 62 insertions(+), 62 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/68/38268/1
diff --git a/vdsm/virt/vm.py b/vdsm/virt/vm.py
index e7fbcf2..cd392c7 100644
--- a/vdsm/virt/vm.py
+++ b/vdsm/virt/vm.py
@@ -1589,7 +1589,7 @@
if self.lastStatus in (vmstatus.MIGRATION_SOURCE,
vmstatus.SAVING_STATE, vmstatus.DOWN):
self.log.error('cannot cont while %s', self.lastStatus)
- return errCode['unexpected']
+ return response.error('unexpected')
self._underlyingCont()
self._setGuestCpuRunning(self._isDomainRunning(),
guestCpuLocked=True)
@@ -1638,7 +1638,7 @@
def shutdown(self, delay, message, reboot, timeout, force):
if self.lastStatus == vmstatus.DOWN:
- return errCode['noVM']
+ return response.error('noVM')
delay = int(delay)
@@ -1913,13 +1913,13 @@
try:
if self.isMigrating():
self.log.warning('vm already migrating')
- return errCode['exist']
+ return response.error('exist')
if self.hasTransientDisks():
- return errCode['transientErr']
+ return response.error('transientErr')
# while we were blocking, another migrationSourceThread could have
# taken self Down
if self._lastStatus == vmstatus.DOWN:
- return errCode['noVM']
+ return response.error('noVM')
self._migrationSourceThread = migration.SourceThread(
self, **params)
self._migrationSourceThread.start()
@@ -1940,11 +1940,11 @@
return self._migrationSourceThread.status
except libvirt.libvirtError as e:
if e.get_error_code() == libvirt.VIR_ERR_OPERATION_INVALID:
- return errCode['migCancelErr']
+ return response.error('migCancelErr')
raise
except AttributeError:
if self._dom is None:
- return errCode['migCancelErr']
+ return response.error('migCancelErr')
raise
finally:
self._guestCpuLock.release()
@@ -2317,7 +2317,7 @@
def hotplugNic(self, params):
if self.isMigrating():
- return errCode['migInProgress']
+ return response.error('migInProgress')
nicParams = params['nic']
nic = vmdevices.network.Interface(self.conf, self.log, **nicParams)
@@ -2336,7 +2336,7 @@
nicXml = hooks.after_nic_hotplug_fail(
nicXml, self.conf, params=nic.custom)
if e.get_error_code() == libvirt.VIR_ERR_NO_DOMAIN:
- return errCode['noVM']
+ return response.error('noVM')
return response.error('hotplugNic', e.message)
else:
# FIXME! We may have a problem here if vdsm dies right after
@@ -2524,7 +2524,7 @@
response['vmList'] = self.status()
return response
else:
- return errCode['updateDevice']
+ return response.error('updateDevice')
def updateDevice(self, params):
if params.get('deviceType') == hwclass.NIC:
@@ -2532,11 +2532,11 @@
elif params.get('deviceType') == hwclass.GRAPHICS:
return self._updateGraphicsDevice(params)
else:
- return errCode['noimpl']
+ return response.error('noimpl')
def hotunplugNic(self, params):
if self.isMigrating():
- return errCode['migInProgress']
+ return response.error('migInProgress')
nicParams = params['nic']
@@ -2583,7 +2583,7 @@
except libvirt.libvirtError as e:
self.log.exception("Hotunplug failed")
if e.get_error_code() == libvirt.VIR_ERR_NO_DOMAIN:
- return errCode['noVM']
+ return response.error('noVM')
# Restore NIC device in vm's conf and _devices
if nicDev:
with self._confLock:
@@ -2602,7 +2602,7 @@
def setNumberOfCpus(self, numberOfCpus):
if self.isMigrating():
- return errCode['migInProgress']
+ return response.error('migInProgress')
self.log.debug("Setting number of cpus to : %s", numberOfCpus)
hooks.before_set_num_of_cpus()
@@ -2612,7 +2612,7 @@
except libvirt.libvirtError as e:
self.log.exception("setNumberOfCpus failed")
if e.get_error_code() == libvirt.VIR_ERR_NO_DOMAIN:
- return errCode['noVM']
+ return response.error('noVM')
return response.error('setNumberOfCpusErr', e.message)
self.conf['smp'] = str(numberOfCpus)
@@ -2646,7 +2646,7 @@
"""
if self.isMigrating():
- return errCode['migInProgress']
+ return response.error('migInProgress')
if not params:
self.log.error("updateVmPolicy got an empty policy.")
@@ -2710,7 +2710,7 @@
except libvirt.libvirtError as e:
self.log.exception("updateVmPolicy failed")
if e.get_error_code() == libvirt.VIR_ERR_NO_DOMAIN:
- return errCode['noVM']
+ return response.error('noVM')
else:
return self._reportError(key='updateVmPolicyErr',
msg=e.message)
@@ -2797,7 +2797,7 @@
except libvirt.libvirtError as e:
self.log.exception("setVmIoTune failed")
if e.get_error_code() == libvirt.VIR_ERR_NO_DOMAIN:
- return errCode['noVM']
+ return response.error('noVM')
else:
return self._reportError(key='updateIoTuneErr',
msg=e.message)
@@ -2860,7 +2860,7 @@
def hotplugDisk(self, params):
if self.isMigrating():
- return errCode['migInProgress']
+ return response.error('migInProgress')
diskParams = params.get('drive', {})
diskParams['path'] = self.cif.prepareVolumePath(diskParams)
@@ -2873,7 +2873,7 @@
drive = vmdevices.storage.Drive(self.conf, self.log, **diskParams)
if drive.hasVolumeLeases:
- return errCode['noimpl']
+ return response.error('noimpl')
driveXml = drive.getXML().toprettyxml(encoding='utf-8')
# TODO: this is debug information. For 3.6.x we still need to
@@ -2889,7 +2889,7 @@
self.log.exception("Hotplug failed")
self.cif.teardownVolumePath(diskParams)
if e.get_error_code() == libvirt.VIR_ERR_NO_DOMAIN:
- return errCode['noVM']
+ return response.error('noVM')
return response.error('hotplugDisk', e.message)
else:
# FIXME! We may have a problem here if vdsm dies right after
@@ -2909,7 +2909,7 @@
def hotunplugDisk(self, params):
if self.isMigrating():
- return errCode['migInProgress']
+ return response.error('migInProgress')
diskParams = params.get('drive', {})
diskParams['path'] = self.cif.prepareVolumePath(diskParams)
@@ -2922,7 +2922,7 @@
return response.error('hotunplugDisk', "Disk not found")
if drive.hasVolumeLeases:
- return errCode['noimpl']
+ return response.error('noimpl')
driveXml = drive.getXML().toprettyxml(encoding='utf-8')
# TODO: this is debug information. For 3.6.x we still need to
@@ -2949,7 +2949,7 @@
except libvirt.libvirtError as e:
self.log.exception("Hotunplug failed")
if e.get_error_code() == libvirt.VIR_ERR_NO_DOMAIN:
- return errCode['noVM']
+ return response.error('noVM')
self._devices[hwclass.DISK].append(drive)
# Restore disk device in vm's conf and _devices
if diskDev:
@@ -3239,7 +3239,7 @@
vmDrives = {}
if self.isMigrating():
- return errCode['migInProgress']
+ return response.error('migInProgress')
for drive in snapDrives:
baseDrv, tgetDrv = _normSnapDriveParams(drive)
@@ -3260,15 +3260,15 @@
except LookupError:
# The volume we want to snapshot doesn't exist
self.log.error("The base volume doesn't exist: %s", baseDrv)
- return errCode['snapshotErr']
+ return response.error('snapshotErr')
if vmDrive.hasVolumeLeases:
self.log.error('disk %s has volume leases', vmDrive.name)
- return errCode['noimpl']
+ return response.error('noimpl')
if vmDrive.transientDisk:
self.log.error('disk %s is a transient disk', vmDrive.name)
- return errCode['transientErr']
+ return response.error('transientErr')
vmDevName = vmDrive.name
@@ -3300,7 +3300,7 @@
self.log.exception('unable to prepare the volume path for '
'disk %s', vmDevName)
_rollbackDrives(preparedDrives)
- return errCode['snapshotErr']
+ return response.error('snapshotErr')
snapType = 'block' if vmDrives[vmDevName].blockDev else 'file'
snapelem = _diskSnapshot(vmDevName, newDrives[vmDevName]["path"],
@@ -3364,7 +3364,7 @@
self.log.exception("Unable to take snapshot")
if memoryParams:
self.cif.teardownVolumePath(memoryVol)
- return errCode['snapshotErr']
+ return response.error('snapshotErr')
# We are padding the memory volume with block size of zeroes
# because qemu-img truncates files such that their size is
@@ -3439,20 +3439,20 @@
srcDrive = self._findDriveByUUIDs(srcDisk)
except LookupError:
self.log.error("Unable to find the disk for '%s'", srcDisk)
- return errCode['imageErr']
+ return response.error('imageErr')
if srcDrive.hasVolumeLeases:
- return errCode['noimpl']
+ return response.error('noimpl')
if srcDrive.transientDisk:
- return errCode['transientErr']
+ return response.error('transientErr')
try:
self._setDiskReplica(srcDrive, dstDisk)
except Exception:
self.log.error("Unable to set the replication for disk '%s' with "
"destination '%s'", srcDrive.name, dstDisk)
- return errCode['replicaErr']
+ return response.error('replicaErr')
dstDiskCopy = dstDisk.copy()
@@ -3484,7 +3484,7 @@
except Exception:
self.log.exception("Cannot complete the disk replication process")
self._delDiskReplica(srcDrive)
- return errCode['replicaErr']
+ return response.error('replicaErr')
if srcDrive.chunked:
try:
@@ -3502,16 +3502,16 @@
try:
srcDrive = self._findDriveByUUIDs(srcDisk)
except LookupError:
- return errCode['imageErr']
+ return response.error('imageErr')
if srcDrive.hasVolumeLeases:
- return errCode['noimpl']
+ return response.error('noimpl')
if srcDrive.transientDisk:
- return errCode['transientErr']
+ return response.error('transientErr')
if not srcDrive.isDiskReplicationInProgress():
- return errCode['replicaErr']
+ return response.error('replicaErr')
# Looking for the replication blockJob info (checking its presence)
blkJobInfo = self._dom.blockJobInfo(srcDrive.name, 0)
@@ -3523,12 +3523,12 @@
# Making sure that we don't have any stale information
self._delDiskReplica(srcDrive)
- return errCode['replicaErr']
+ return response.error('replicaErr')
# Checking if we reached the replication mode ("mirroring" in libvirt
# and qemu terms)
if blkJobInfo['cur'] != blkJobInfo['end']:
- return errCode['unavail']
+ return response.error('unavail')
dstDiskCopy = dstDisk.copy()
@@ -3567,7 +3567,7 @@
# There is nothing we can do at this point other than logging
self.log.exception("Unable to teardown the replication "
"destination disk")
- return errCode['changeDisk'] # Finally is evaluated
+ return response.error('changeDisk') # Finally is evaluated
else:
try:
self.cif.teardownVolumePath(diskToTeardown)
@@ -3595,7 +3595,7 @@
"Requested extension size %s for disk %s is smaller "
"than the current size %s", newSizeBytes, drive.name,
currentSize)
- return errCode['resizeErr']
+ return response.error('resizeErr')
# Uncommit the current volume size (mark as in transaction)
self.cif.irs.setVolumeSize(drive.domainID, drive.poolID,
@@ -3608,7 +3608,7 @@
self.log.exception(
"An error occurred while trying to extend the disk %s "
"to size %s", drive.name, newSizeBytes)
- return errCode['updateDevice']
+ return response.error('updateDevice')
finally:
# In all cases we want to try and fix the size in the metadata.
# Same as above, this is what libvirt would do, see BZ#963881
@@ -3650,7 +3650,7 @@
"Libvirt failed to notify the new size %s to the "
"running VM, the change will be available at the ",
"reboot", sizeRoundedBytes, exc_info=True)
- return errCode['updateDevice']
+ return response.error('updateDevice')
return {'status': doneCode, 'size': str(sizeRoundedBytes)}
@@ -3658,12 +3658,12 @@
try:
newSizeBytes = int(newSizeBytes)
except ValueError:
- return errCode['resizeErr']
+ return response.error('resizeErr')
try:
drive = self._findDriveByUUIDs(driveSpecs)
except LookupError:
- return errCode['imageErr']
+ return response.error('imageErr')
try:
if drive.format == "cow":
@@ -3673,7 +3673,7 @@
except Exception:
self.log.exception("Unable to extend disk %s to size %s",
drive.name, newSizeBytes)
- return errCode['updateDevice']
+ return response.error('updateDevice')
def _onWatchdogEvent(self, action):
def actionToString(action):
@@ -3714,7 +3714,7 @@
try:
path = self.cif.prepareVolumePath(drivespec)
except VolumeError:
- return errCode['imageErr']
+ return response.error('imageErr')
diskelem = vmxml.Element('disk', type='file', device=vmDev)
diskelem.appendChildWithArgs('source', file=path)
diskelem.appendChildWithArgs('target', dev=blockdev)
@@ -3725,7 +3725,7 @@
except Exception:
self.log.debug("updateDeviceFlags failed", exc_info=True)
self.cif.teardownVolumePath(drivespec)
- return errCode['changeDisk']
+ return response.error('changeDisk')
if vmDev in self.conf:
self.cif.teardownVolumePath(self.conf[vmDev])
@@ -3902,7 +3902,7 @@
self.conf['vmId'], exc_info=True)
if e.get_error_code() == libvirt.VIR_ERR_OPERATION_FAILED:
return self._destroyVmForceful()
- return errCode['destroyErr']
+ return response.error('destroyErr')
return {'status': doneCode}
def _destroyVmForceful(self):
@@ -3911,7 +3911,7 @@
except libvirt.libvirtError:
self.log.warning("Failed to destroy VM '%s'",
self.conf['vmId'], exc_info=True)
- return errCode['destroyErr']
+ return response.error('destroyErr')
return {'status': doneCode}
def deleteVm(self):
@@ -4673,7 +4673,7 @@
def merge(self, driveSpec, baseVolUUID, topVolUUID, bandwidth, jobUUID):
if not caps.getLiveMergeSupport():
self.log.error("Live merge is not supported on this host")
- return errCode['mergeErr']
+ return response.error('mergeErr')
bandwidth = int(bandwidth)
if jobUUID is None:
@@ -4682,14 +4682,14 @@
try:
drive = self._findDriveByUUIDs(driveSpec)
except LookupError:
- return errCode['imageErr']
+ return response.error('imageErr')
# Check that libvirt exposes full volume chain information
chains = self._driveGetActualVolumeChain([drive])
if drive['alias'] not in chains:
self.log.error("merge: libvirt does not support volume chain "
"monitoring. Unable to perform live merge.")
- return errCode['mergeErr']
+ return response.error('mergeErr')
base = top = None
for v in drive.volumeChain:
@@ -4699,10 +4699,10 @@
top = v['path']
if base is None:
self.log.error("merge: base volume '%s' not found", baseVolUUID)
- return errCode['mergeErr']
+ return response.error('mergeErr')
if top is None:
self.log.error("merge: top volume '%s' not found", topVolUUID)
- return errCode['mergeErr']
+ return response.error('mergeErr')
# If base is a shared volume then we cannot allow a merge. Otherwise
# We'd corrupt the shared volume for other users.
@@ -4710,10 +4710,10 @@
drive.imageID, baseVolUUID)
if res['status']['code'] != 0:
self.log.error("Unable to get volume info for '%s'", baseVolUUID)
- return errCode['mergeErr']
+ return response.error('mergeErr')
if res['info']['voltype'] == 'SHARED':
self.log.error("merge: Refusing to merge into a shared volume")
- return errCode['mergeErr']
+ return response.error('mergeErr')
# Indicate that we expect libvirt to maintain the relative paths of
# backing files. This is necessary to ensure that a volume chain is
@@ -4738,7 +4738,7 @@
if res['status']['code'] != 0:
self.log.error("Unable to get volume info for '%s'",
topVolUUID)
- return errCode['mergeErr']
+ return response.error('mergeErr')
topSize = int(res['info']['apparentsize'])
# Take the jobs lock here to protect the new job we are tracking from
@@ -4749,7 +4749,7 @@
'commit')
except BlockJobExistsError:
self.log.error("A block job is already active on this disk")
- return errCode['mergeErr']
+ return response.error('mergeErr')
self.log.info("Starting merge with jobUUID='%s'", jobUUID)
try:
@@ -4760,7 +4760,7 @@
except (RuntimeError, libvirt.libvirtError):
self.log.exception("Live merge failed (job: %s)", jobUUID)
self.untrackBlockJob(jobUUID)
- return errCode['mergeErr']
+ return response.error('mergeErr')
# blockCommit will cause data to be written into the base volume.
# Perform an initial extension to ensure there is enough space to
--
To view, visit https://gerrit.ovirt.org/38268
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3825faf7a144ef8973dee3cb9f9f0e52fabfc039
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani at redhat.com>
More information about the vdsm-patches
mailing list