Change in vdsm[master]: Fix pep8 completely for API.py
by asegurap@redhat.com
Antoni Segura Puimedon has uploaded a new change for review.
Change subject: Fix pep8 completely for API.py
......................................................................
Fix pep8 completely for API.py
Change-Id: I0369524e6f2476136c40678ddac3cda336f9a54b
Signed-off-by: Antoni S. Puimedon <asegurap(a)redhat.com>
---
M vdsm/API.py
1 file changed, 102 insertions(+), 102 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/93/9993/1
diff --git a/vdsm/API.py b/vdsm/API.py
index a1e3f2c..e0f2d97 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -163,14 +163,14 @@
if type(pickledMachineParams) == dict:
self.log.debug('loaded pickledMachineParams '
- + str(pickledMachineParams))
+ + str(pickledMachineParams))
self.log.debug('former conf ' + str(vmParams))
vmParams.update(pickledMachineParams)
finally:
self._cif.teardownVolumePath(paramFilespec)
except:
self.log.error("Error restoring VM parameters",
- exc_info=True)
+ exc_info=True)
requiredParams = ['vmId', 'memSize', 'display']
for param in requiredParams:
@@ -192,7 +192,7 @@
'message': 'Must specify nonzero memSize'}}
if vmParams.get('boot') == 'c' and not 'hda' in vmParams \
- and not vmParams.get('drives'):
+ and not vmParams.get('drives'):
return {'status': {'code': errCode['MissParam']
['status']['code'],
'message': 'missing boot disk'}}
@@ -206,7 +206,7 @@
if 'sysprepInf' in vmParams:
if not vmParams.get('floppy'):
vmParams['floppy'] = '%s%s.vfd' % (constants.P_VDSM_RUN,
- vmParams['vmId'])
+ vmParams['vmId'])
vmParams['volatileFloppy'] = True
if caps.osversion()['name'] == caps.OSName.UNKNOWN:
@@ -216,7 +216,7 @@
if 'sysprepInf' in vmParams:
if not self._createSysprepFloppyFromInf(vmParams['sysprepInf'],
- vmParams['floppy']):
+ vmParams['floppy']):
return {'status': {'code': errCode['createErr']
['status']['code'],
'message': 'Failed to create '
@@ -228,11 +228,11 @@
return {'status': {'code': errCode['createErr']
['status']['code'],
'message': 'Unknown display type %s'
- % vmParams.get('display')}}
+ % vmParams.get('display')}}
if 'nicModel' not in vmParams:
vmParams['nicModel'] = config.get('vars', 'nic_model')
vmParams['displayIp'] = self._getNetworkIp(vmParams.get(
- 'displayNetwork'))
+ 'displayNetwork'))
vmParams['displayPort'] = '-1' # selected by libvirt
vmParams['displaySecurePort'] = '-1'
return self._cif.createVm(vmParams)
@@ -592,8 +592,8 @@
def _createSysprepFloppyFromInf(self, infFileBinary, floppyImage):
try:
rc, out, err = utils.execCmd([constants.EXT_MK_SYSPREP_FLOPPY,
- floppyImage],
- sudo=True, data=infFileBinary.data)
+ floppyImage],
+ sudo=True, data=infFileBinary.data)
if rc:
return False
else:
@@ -609,12 +609,11 @@
domainID, poolID, stateImageID, stateVolumeID, \
paramImageID, paramVolumeID = hiberVolHandle.split(',')
- return dict(domainID=domainID, poolID=poolID,
- imageID=stateImageID, volumeID=stateVolumeID,
- device='disk'), \
- dict(domainID=domainID, poolID=poolID,
- imageID=paramImageID, volumeID=paramVolumeID,
- device='disk')
+ return dict(domainID=domainID, poolID=poolID, imageID=stateImageID,
+ volumeID=stateVolumeID, device='disk'), \
+ dict(domainID=domainID, poolID=poolID,
+ imageID=paramImageID, volumeID=paramVolumeID,
+ device='disk')
def _getNetworkIp(self, bridge):
try:
@@ -680,55 +679,59 @@
volFormat, preallocate, postZero, force):
vmUUID = '' # vmUUID is never used
return self._irs.copyImage(self._sdUUID, self._spUUID, vmUUID,
- self._imgUUID, self._UUID, dstImgUUID, dstVolUUID, desc,
- dstSdUUID, volType, volFormat, preallocate, postZero,
- force)
+ self._imgUUID, self._UUID, dstImgUUID,
+ dstVolUUID, desc, dstSdUUID, volType,
+ volFormat, preallocate, postZero, force)
def create(self, size, volFormat, preallocate, diskType, desc,
srcImgUUID, srcVolUUID):
return self._irs.createVolume(self._sdUUID, self._spUUID,
- self._imgUUID, size, volFormat, preallocate, diskType,
- self._UUID, desc, srcImgUUID, srcVolUUID)
+ self._imgUUID, size, volFormat,
+ preallocate, diskType, self._UUID, desc,
+ srcImgUUID, srcVolUUID)
def delete(self, postZero, force):
return self._irs.deleteVolume(self._sdUUID, self._spUUID,
- self._imgUUID, [self._UUID], postZero, force)
+ self._imgUUID, [self._UUID], postZero,
+ force)
def extend(self, size, isShuttingDown):
return self._irs.extendVolume(self._sdUUID, self._spUUID,
- self._imgUUID, self._UUID, size, isShuttingDown)
+ self._imgUUID, self._UUID, size,
+ isShuttingDown)
def getInfo(self):
return self._irs.getVolumeInfo(self._sdUUID, self._spUUID,
- self._imgUUID, self._UUID)
+ self._imgUUID, self._UUID)
def getPath(self):
return self._irs.getVolumePath(self._sdUUID, self._spUUID,
- self._imgUUID, self._UUID)
+ self._imgUUID, self._UUID)
def getSize(self):
return self._irs.getVolumeSize(self._sdUUID, self._spUUID,
- self._imgUUID, self._UUID)
+ self._imgUUID, self._UUID)
def prepare(self, rw):
return self._irs.prepareVolume(self._sdUUID, self._spUUID,
- self._imgUUID, self._UUID, rw)
+ self._imgUUID, self._UUID, rw)
def refresh(self):
return self._irs.refreshVolume(self._sdUUID, self._spUUID,
- self._imgUUID, self._UUID)
+ self._imgUUID, self._UUID)
def setDescription(self, description):
- return self._irs.setVolumeDescription(self._sdUUID,
- self._spUUID, self._imgUUID, self._UUID, description)
+ return self._irs.setVolumeDescription(self._sdUUID, self._spUUID,
+ self._imgUUID, self._UUID,
+ description)
def setLegality(self, legality):
- return self._irs.setVolumeLegality(self._sdUUID,
- self._spUUID, self._imgUUID, self._UUID, legality)
+ return self._irs.setVolumeLegality(self._sdUUID, self._spUUID,
+ self._imgUUID, self._UUID, legality)
def tearDown(self):
return self._irs.teardownVolume(self._sdUUID, self._spUUID,
- self._imgUUID, self._UUID)
+ self._imgUUID, self._UUID)
class Image(APIBase):
@@ -749,36 +752,37 @@
self._sdUUID = sdUUID
def delete(self, postZero, force):
- return self._irs.deleteImage(self._sdUUID, self._spUUID,
- self._UUID, postZero, force)
+ return self._irs.deleteImage(self._sdUUID, self._spUUID, self._UUID,
+ postZero, force)
def deleteVolumes(self, volumeList, postZero=False, force=False):
- return self._irs.deleteVolume(self._sdUUID, self._spUUID,
- self._UUID, volumeList, postZero, force)
+ return self._irs.deleteVolume(self._sdUUID, self._spUUID, self._UUID,
+ volumeList, postZero, force)
def getVolumes(self):
- return self._irs.getVolumesList(self._sdUUID, self._spUUID,
- self._UUID)
+ return self._irs.getVolumesList(self._sdUUID, self._spUUID, self._UUID)
def mergeSnapshots(self, ancestor, successor, postZero):
vmUUID = '' # Not used
# XXX: On success, self._sdUUID needs to be updated
- return self._irs.mergeSnapshots(self._sdUUID, self._spUUID,
- vmUUID, self._UUID, ancestor, successor, postZero)
+ return self._irs.mergeSnapshots(self._sdUUID, self._spUUID, vmUUID,
+ self._UUID, ancestor, successor,
+ postZero)
def move(self, dstSdUUID, operation, postZero, force):
vmUUID = '' # Not used
# XXX: On success, self._sdUUID needs to be updated
- return self._irs.moveImage(self._spUUID, self._sdUUID,
- dstSdUUID, self._UUID, vmUUID, operation, postZero, force)
+ return self._irs.moveImage(self._spUUID, self._sdUUID, dstSdUUID,
+ self._UUID, vmUUID, operation, postZero,
+ force)
def cloneStructure(self, dstSdUUID):
return self._irs.cloneImageStructure(self._spUUID, self._sdUUID,
- self._UUID, dstSdUUID)
+ self._UUID, dstSdUUID)
def syncData(self, dstSdUUID, syncType):
- return self._irs.syncImageData(self._spUUID, self._sdUUID,
- self._UUID, dstSdUUID, syncType)
+ return self._irs.syncImageData(self._spUUID, self._sdUUID, self._UUID,
+ dstSdUUID, syncType)
class LVMVolumeGroup(APIBase):
@@ -853,25 +857,25 @@
def create(self, type, typeArgs, name, domainClass, version=None):
if version is None:
version = constants.SUPPORTED_DOMAIN_VERSIONS[0]
- return self._irs.createStorageDomain(type, self._UUID, name,
- typeArgs, domainClass, version)
+ return self._irs.createStorageDomain(type, self._UUID, name, typeArgs,
+ domainClass, version)
def deactivate(self, masterSdUUID, masterVersion):
- return self._irs.deactivateStorageDomain(self._UUID,
- self._spUUID, masterSdUUID, masterVersion)
+ return self._irs.deactivateStorageDomain(self._UUID, self._spUUID,
+ masterSdUUID, masterVersion)
def detach(self, masterSdUUID, masterVersion, force):
# XXX: on success, self._spUUID should be set to None
if force:
return self._irs.forcedDetachStorageDomain(self._UUID,
- self._spUUID)
+ self._spUUID)
else:
- return self._irs.detachStorageDomain(self._UUID,
- self._spUUID, masterSdUUID, masterVersion)
+ return self._irs.detachStorageDomain(self._UUID, self._spUUID,
+ masterSdUUID, masterVersion)
def extend(self, devlist, force=False):
- return self._irs.extendStorageDomain(self._UUID,
- self._spUUID, devlist, force)
+ return self._irs.extendStorageDomain(self._UUID, self._spUUID, devlist,
+ force)
def format(self, autoDetach):
return self._irs.formatStorageDomain(self._UUID, autoDetach)
@@ -892,12 +896,11 @@
return self._irs.getVolumesList(self._UUID, self._spUUID, imgUUID)
def setDescription(self, description):
- return self._irs.setStorageDomainDescription(self._UUID,
- description)
+ return self._irs.setStorageDomainDescription(self._UUID, description)
def uploadVolume(self, imgUUID, volUUID, srcPath, size, method):
- return self._irs.uploadVolume(self._UUID, self._spUUID,
- imgUUID, volUUID, srcPath, size, method)
+ return self._irs.uploadVolume(self._UUID, self._spUUID, imgUUID,
+ volUUID, srcPath, size, method)
def validate(self):
return self._irs.validateStorageDomain(self._UUID)
@@ -911,38 +914,37 @@
def connect(self, hostID, scsiKey, masterSdUUID, masterVersion):
return self._irs.connectStoragePool(self._UUID, hostID, scsiKey,
- masterSdUUID, masterVersion)
+ masterSdUUID, masterVersion)
def connectStorageServer(self, domainType, connectionParams):
- return self._irs.connectStorageServer(domainType,
- self._UUID, connectionParams)
+ return self._irs.connectStorageServer(domainType, self._UUID,
+ connectionParams)
def create(self, name, masterSdUUID, masterVersion, domainList,
lockRenewalIntervalSec, leaseTimeSec, ioOpTimeoutSec,
leaseRetries):
poolType = None # Not used
lockPolicy = None # Not used
- return self._irs.createStoragePool(poolType, self._UUID,
- name, masterSdUUID, domainList, masterVersion,
- lockPolicy, lockRenewalIntervalSec, leaseTimeSec,
- ioOpTimeoutSec, leaseRetries)
+ return self._irs.createStoragePool(
+ poolType, self._UUID, name, masterSdUUID, domainList,
+ masterVersion, lockPolicy, lockRenewalIntervalSec, leaseTimeSec,
+ ioOpTimeoutSec, leaseRetries)
def destroy(self, hostID, scsiKey):
return self._irs.destroyStoragePool(self._UUID, hostID, scsiKey)
def disconnect(self, hostID, scsiKey, remove):
- return self._irs.disconnectStoragePool(self._UUID, hostID,
- scsiKey, remove)
+ return self._irs.disconnectStoragePool(self._UUID, hostID, scsiKey,
+ remove)
def disconnectStorageServer(self, domainType, connectionParams):
return self._irs.disconnectStorageServer(domainType, self._UUID,
- connectionParams)
+ connectionParams)
def fence(self):
lastOwner = None # Unused
lastLver = None # Unused
- return self._irs.fenceSpmStorage(self._UUID, lastOwner,
- lastLver)
+ return self._irs.fenceSpmStorage(self._UUID, lastOwner, lastLver)
def getBackedUpVmsInfo(self, sdUUID, vmList):
return self._irs.getVmsInfo(self._UUID, sdUUID, vmList)
@@ -955,7 +957,7 @@
def getDomainsContainingImage(self, imgUUID, onlyDataDomains=True):
return self._irs.getImageDomainsList(self._UUID, imgUUID,
- onlyDataDomains)
+ onlyDataDomains)
def getIsoList(self, filenameExtension='iso'):
return self._irs.getIsoList(self._UUID, filenameExtension)
@@ -969,45 +971,43 @@
def moveMultipleImages(self, srcSdUUID, dstSdUUID, imgDict,
force=False):
vmUUID = None # Unused parameter
- return self._irs.moveMultipleImages(self._UUID, srcSdUUID,
- dstSdUUID, imgDict, vmUUID, force)
+ return self._irs.moveMultipleImages(self._UUID, srcSdUUID, dstSdUUID,
+ imgDict, vmUUID, force)
def reconstructMaster(self, hostId, name, masterSdUUID, masterVersion,
domainDict, lockRenewalIntervalSec, leaseTimeSec,
ioOpTimeoutSec, leaseRetries):
lockPolicy = None # Not used
- return self._irs.reconstructMaster(self._UUID, name,
- masterSdUUID, domainDict, masterVersion, lockPolicy,
- lockRenewalIntervalSec, leaseTimeSec,
- ioOpTimeoutSec, leaseRetries, hostId)
+ return self._irs.reconstructMaster(
+ self._UUID, name, masterSdUUID, domainDict, masterVersion,
+ lockPolicy, lockRenewalIntervalSec, leaseTimeSec, ioOpTimeoutSec,
+ leaseRetries, hostId)
def refresh(self, masterSdUUID, masterVersion):
- return self._irs.refreshStoragePool(self._UUID,
- masterSdUUID, masterVersion)
+ return self._irs.refreshStoragePool(self._UUID, masterSdUUID,
+ masterVersion)
def setDescription(self, description):
- return self._irs.setStoragePoolDescription(self._UUID,
- description)
+ return self._irs.setStoragePoolDescription(self._UUID, description)
def spmStart(self, prevID, prevLver, enableScsiFencing,
maxHostID=None, domVersion=None):
if maxHostID is None:
maxHostID = storage.safelease.MAX_HOST_ID
recoveryMode = None # unused
- return self._irs.spmStart(self._UUID, prevID, prevLver,
- recoveryMode, enableScsiFencing, maxHostID, domVersion)
+ return self._irs.spmStart(self._UUID, prevID, prevLver, recoveryMode,
+ enableScsiFencing, maxHostID, domVersion)
def spmStop(self):
return self._irs.spmStop(self._UUID)
def upgrade(self, targetDomVersion):
- return self._irs.upgradeStoragePool(self._UUID,
- targetDomVersion)
+ return self._irs.upgradeStoragePool(self._UUID, targetDomVersion)
def validateStorageServerConnection(self, domainType,
connectionParams):
- return self._irs.validateStorageServerConnection(domainType,
- self._UUID, connectionParams)
+ return self._irs.validateStorageServerConnection(
+ domainType, self._UUID, connectionParams)
def updateVMs(self, vmList, sdUUID):
return self._irs.updateVM(self._UUID, vmList, sdUUID)
@@ -1061,9 +1061,9 @@
cleantext += line
return cleantext
- self.log.debug('fenceNode(addr=%s,port=%s,agent=%s,user=%s,'
- 'passwd=%s,action=%s,secure=%s,options=%s)', addr, port, agent,
- username, 'XXXX', action, secure, options)
+ self.log.debug('fenceNode(addr=%s,port=%s,agent=%s,user=%s,passwd=%s,'
+ 'action=%s,secure=%s,options=%s)', addr, port, agent,
+ username, 'XXXX', action, secure, options)
if action not in ('status', 'on', 'off', 'reboot'):
raise ValueError('illegal action ' + action)
@@ -1072,8 +1072,8 @@
try:
p = subprocess.Popen([script], stdin=subprocess.PIPE,
- stdout=subprocess.PIPE, stderr=subprocess.PIPE,
- close_fds=True)
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE, close_fds=True)
except OSError, e:
if e.errno == os.errno.ENOENT:
return errCode['fenceAgent']
@@ -1136,11 +1136,11 @@
stats['memCommitted'] = self._memCommitted() / Mbytes
stats['swapTotal'], stats['swapFree'] = _readSwapTotalFree()
stats['vmCount'], stats['vmActive'], stats['vmMigrating'] = \
- self._countVms()
+ self._countVms()
(tm_year, tm_mon, tm_day, tm_hour, tm_min, tm_sec,
- dummy, dummy, dummy) = time.gmtime(time.time())
+ dummy, dummy, dummy) = time.gmtime(time.time())
stats['dateTime'] = '%02d-%02d-%02dT%02d:%02d:%02d GMT' % (
- tm_year, tm_mon, tm_day, tm_hour, tm_min, tm_sec)
+ tm_year, tm_mon, tm_day, tm_hour, tm_min, tm_sec)
if self._cif.mom:
stats['momStatus'] = self._cif.mom.getStatus()
stats.update(self._cif.mom.getKsmStats())
@@ -1187,8 +1187,8 @@
vmSet = set(vmList)
return {'status': doneCode,
'vmList': [reportedStatus(v, fullStatus)
- for v in self._cif.vmContainer.values()
- if not vmSet or v.id in vmSet]}
+ for v in self._cif.vmContainer.values()
+ if not vmSet or v.id in vmSet]}
# Networking-related functions
def setupNetworks(self, networks={}, bondings={}, options={}):
@@ -1264,8 +1264,8 @@
(nics,
_netinfo.bondings[bond]["slaves"]))
raise configNetwork.ConfigNetworkError(
- configNetwork.ne.ERR_BAD_NIC,
- "not all nics are enslaved")
+ configNetwork.ne.ERR_BAD_NIC,
+ "not all nics are enslaved")
except configNetwork.ConfigNetworkError, e:
self.log.error(e.message, exc_info=True)
return {'status': {'code': e.errCode,
@@ -1324,7 +1324,7 @@
def getStorageDomains(self, spUUID=None, domainClass=None,
storageType=None, remotePath=None):
return self._irs.getStorageDomainsList(spUUID, domainClass,
- storageType, remotePath)
+ storageType, remotePath)
def getConnectedStoragePools(self):
return self._irs.getConnectedStoragePoolsList()
@@ -1386,7 +1386,7 @@
freeOrCached = (meminfo['MemFree'] +
meminfo['Cached'] + meminfo['Buffers']) * Kbytes
return freeOrCached + resident - memCommitted - \
- config.getint('vars', 'host_mem_reserve') * Mbytes
+ config.getint('vars', 'host_mem_reserve') * Mbytes
def _memShared(self):
"""
@@ -1432,5 +1432,5 @@
for k, v in options.items():
if k in _translationMap:
logging.warn("options %s is deprecated. Use %s instead" %
- (k, _translationMap[k]))
+ (k, _translationMap[k]))
options[_translationMap[k]] = options.pop(k)
--
To view, visit http://gerrit.ovirt.org/9993
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0369524e6f2476136c40678ddac3cda336f9a54b
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Antoni Segura Puimedon <asegurap(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: Fix vdsClient.py pep8 completely.
by asegurap@redhat.com
Antoni Segura Puimedon has uploaded a new change for review.
Change subject: Fix vdsClient.py pep8 completely.
......................................................................
Fix vdsClient.py pep8 completely.
Change-Id: Ic5fa63330f30e76f259aa7edc78f97d911a7d5c3
Signed-off-by: Antoni S. Puimedon <asegurap(a)redhat.com>
---
M vdsm_cli/vdsClient.py
1 file changed, 503 insertions(+), 487 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/92/9992/1
diff --git a/vdsm_cli/vdsClient.py b/vdsm_cli/vdsClient.py
index c67e3fe..f07d6b3 100644
--- a/vdsm_cli/vdsClient.py
+++ b/vdsm_cli/vdsClient.py
@@ -346,8 +346,8 @@
if (len(args) > 4):
params = self._parseDriveSpec(args[4])
- return self.ExecAndExit(self.s.setVmTicket(vmId, otp64, secs,
- connAct, params))
+ return self.ExecAndExit(self.s.setVmTicket(vmId, otp64, secs, connAct,
+ params))
def do_reset(self, args):
vmId = args[0]
@@ -653,7 +653,7 @@
password = args[2]
con = dict(id="", connection=ip, port=port, iqn="", portal="",
- user=username, password=password)
+ user=username, password=password)
targets = self.s.discoverSendTargets(con)
if targets['status']['code']:
@@ -1164,10 +1164,10 @@
if status['status']['code']:
return status['status']['code'], status['status']['message']
print "TASK: %s STATUS: %s RESULT: %s MESSAGE: '%s'" % (
- taskID,
- status["taskStatus"]["taskState"],
- status["taskStatus"]["taskResult"],
- status["taskStatus"]["message"])
+ taskID,
+ status["taskStatus"]["taskState"],
+ status["taskStatus"]["taskResult"],
+ status["taskStatus"]["message"])
print "%s" % status # TODO
return 0, ''
@@ -1645,20 +1645,24 @@
def diskReplicateStart(self, args):
vmUUID, spUUID, sdUUID, imgUUID, volUUID, dstSdUUID = args
- status = self.s.diskReplicateStart(vmUUID, {'poolID': spUUID,
- 'domainID': sdUUID, 'imageID': imgUUID, 'volumeID': volUUID},
+ status = self.s.diskReplicateStart(
+ vmUUID,
+ {'poolID': spUUID, 'domainID': sdUUID, 'imageID': imgUUID,
+ 'volumeID': volUUID},
{'poolID': spUUID, 'domainID': dstSdUUID, 'imageID': imgUUID,
- 'volumeID': volUUID})
+ 'volumeID': volUUID})
return status['status']['code'], status['status']['message']
def diskReplicateFinish(self, args):
vmUUID, spUUID, sdUUID, imgUUID, volUUID, dstSdUUID = args
- status = self.s.diskReplicateFinish(vmUUID, {'poolID': spUUID,
- 'domainID': sdUUID, 'imageID': imgUUID, 'volumeID': volUUID},
+ status = self.s.diskReplicateFinish(
+ vmUUID,
+ {'poolID': spUUID, 'domainID': sdUUID, 'imageID': imgUUID,
+ 'volumeID': volUUID},
{'poolID': spUUID, 'domainID': dstSdUUID, 'imageID': imgUUID,
- 'volumeID': volUUID})
+ 'volumeID': volUUID})
return status['status']['code'], status['status']['message']
@@ -1669,81 +1673,79 @@
serv = service()
commands = {
'create': (serv.do_create,
- ('<configFile> [parameter=value, parameter=value, '
- '......]',
- 'Creates new machine with the paremeters given in the'
- ' command line overriding the ones in the config file',
- 'Example with config file: vdsClient someServer create'
- ' myVmConfigFile',
- 'Example with no file : vdsClient someServer create'
- ' /dev/null vmId=<uuid> memSize=256 '
- 'imageFile=someImage display=<vnc|qxl|qxlnc>',
- 'Parameters list: r=required, o=optional',
- 'r vmId=<uuid> : Unique identification for the '
- 'created VM. Any additional operation on the VM must '
- 'refer to this ID',
- 'o vmType=<qemu/kvm> : Virtual machine technology - '
- 'if not given kvm is default',
- 'o kvmEnable=<true/false> : run in KVM enabled mode '
- 'or full emulation - default is according to the VDS '
- 'capabilities',
- 'r memSize=<int> : Memory to allocate for this '
- 'machine',
- 'r macAddr=<aa:bb:cc:dd:ee:ff> : MAC address of the '
- 'machine',
- 'r display=<vnc|qxl|qxlnc> : send the machine '
- 'display to vnc, spice, or spice with no '
- 'image compression',
- 'o drive=pool:poolID,domain:domainID,image:imageID,'
- 'volume:volumeID[,boot:true,format:cow] : disk image '
- 'by UUIDs',
- 'o (deprecated) hda/b/c/d=<path> : Disk drive '
- 'images',
- 'o floppy=<image> : Mount the specified Image as '
- 'floppy',
- 'o cdrom=<path> : ISO image file to be mounted as '
- 'the powerup cdrom',
- 'o boot=<c/d/n> : boot device - drive C or cdrom or '
- 'network',
- 'o sysprepInf=/path/to/file: Launch with the '
- 'specified file as sysprep.inf in floppy',
- #'o any parmeter=<any value> : parameter that is '
- #'not familiar is passed as is to the VM',
- #' and displayed with '
- #'all other parameter. They can be used for '
- #'additional',
- #' information the user '
- #'want to reserve with the machine'
- 'o acpiEnable : If present will remove the default '
- '-no-acpi switch',
- 'o qgaEnable : use qemu-ga as guest agent',
- 'o tdf : If present will add the -rtc-td-hack '
- 'switch',
- 'o irqChip : If false, add the -no-kvm-irqchip '
- 'switch',
- 'o spiceSecureChannels : comma-separated list of '
- 'spice channel that will be encrypted',
- 'o spiceMonitors : number of emulated screen heads',
- 'o soundDevice : emulated sound device',
- 'o launchPaused : If "true", start qemu paused',
- 'o vmName : human-readable name of new VM',
- 'o tabletEnable : If "true", enable tablet input',
- 'o timeOffset : guest\'s start date, relative to '
- 'host\'s time, in seconds',
- 'o smp : number of vcpus',
- 'o smpCoresPerSocket, smpThreadsPerCore : vcpu '
- 'topology',
- 'o keyboardLayout : language code of client '
- 'keyboard',
- 'o cpuType : emulated cpu (with optional flags)',
- 'o emulatedMachine : passed as qemu\'s -M',
- 'o devices={name:val[, name:val, name:{name:val, '
- 'name:val}]} : add a fully specified device',
- 'o cpuPinning={vcpuid:pinning} cpu pinning in '
- 'libvirt-like format. see '
- 'http://libvirt.org/formatdomain.html'
- '#elementsCPUTuning'
- )),
+ ('<configFile> [parameter=value, parameter=value, ......]',
+ 'Creates new machine with the paremeters given in the'
+ ' command line overriding the ones in the config file',
+ 'Example with config file: vdsClient someServer create'
+ ' myVmConfigFile',
+ 'Example with no file : vdsClient someServer create'
+ ' /dev/null vmId=<uuid> memSize=256 '
+ 'imageFile=someImage display=<vnc|qxl|qxlnc>',
+ 'Parameters list: r=required, o=optional',
+ 'r vmId=<uuid> : Unique identification for the '
+ 'created VM. Any additional operation on the VM must '
+ 'refer to this ID',
+ 'o vmType=<qemu/kvm> : Virtual machine technology - '
+ 'if not given kvm is default',
+ 'o kvmEnable=<true/false> : run in KVM enabled mode '
+ 'or full emulation - default is according to the VDS '
+ 'capabilities',
+ 'r memSize=<int> : Memory to allocate for this '
+ 'machine',
+ 'r macAddr=<aa:bb:cc:dd:ee:ff> : MAC address of the '
+ 'machine',
+ 'r display=<vnc|qxl|qxlnc> : send the machine '
+ 'display to vnc, spice, or spice with no '
+ 'image compression',
+ 'o drive=pool:poolID,domain:domainID,image:imageID,'
+ 'volume:volumeID[,boot:true,format:cow] : disk image '
+ 'by UUIDs',
+ 'o (deprecated) hda/b/c/d=<path> : Disk drive '
+ 'images',
+ 'o floppy=<image> : Mount the specified Image as '
+ 'floppy',
+ 'o cdrom=<path> : ISO image file to be mounted as '
+ 'the powerup cdrom',
+ 'o boot=<c/d/n> : boot device - drive C or cdrom or '
+ 'network',
+ 'o sysprepInf=/path/to/file: Launch with the '
+ 'specified file as sysprep.inf in floppy',
+ #'o any parmeter=<any value> : parameter that is '
+ #'not familiar is passed as is to the VM',
+ #' and displayed with '
+ #'all other parameter. They can be used for '
+ #'additional',
+ #' information the user '
+ #'want to reserve with the machine'
+ 'o acpiEnable : If present will remove the default '
+ '-no-acpi switch',
+ 'o qgaEnable : use qemu-ga as guest agent',
+ 'o tdf : If present will add the -rtc-td-hack '
+ 'switch',
+ 'o irqChip : If false, add the -no-kvm-irqchip '
+ 'switch',
+ 'o spiceSecureChannels : comma-separated list of '
+ 'spice channel that will be encrypted',
+ 'o spiceMonitors : number of emulated screen heads',
+ 'o soundDevice : emulated sound device',
+ 'o launchPaused : If "true", start qemu paused',
+ 'o vmName : human-readable name of new VM',
+ 'o tabletEnable : If "true", enable tablet input',
+ 'o timeOffset : guest\'s start date, relative to '
+ 'host\'s time, in seconds',
+ 'o smp : number of vcpus',
+ 'o smpCoresPerSocket, smpThreadsPerCore : vcpu '
+ 'topology',
+ 'o keyboardLayout : language code of client '
+ 'keyboard',
+ 'o cpuType : emulated cpu (with optional flags)',
+ 'o emulatedMachine : passed as qemu\'s -M',
+ 'o devices={name:val[, name:val, name:{name:val, '
+ 'name:val}]} : add a fully specified device',
+ 'o cpuPinning={vcpuid:pinning} cpu pinning in '
+ 'libvirt-like format. see '
+ 'http://libvirt.org/formatdomain.html#elementsCPUTuning'
+ )),
'vmUpdateDevice': (serv.vmUpdateDevice,
('<vmId> <devicespec>',
'Update a VM\'s device',
@@ -1763,16 +1765,16 @@
'if empty list.'
)),
'hotplugNic': (serv.hotplugNic,
- ('<vmId> <nicspec>',
- 'Hotplug NIC to existing VM',
- 'nicspec parameters list: r=required, o=optional',
- 'r device: bridge|sriov|vnlink|bridgeless.',
- 'r network: network name',
- 'r macAddr: mac address',
- 'r nicModel: pv|rtl8139|e1000',
- 'o bootOrder: <int> - global boot order across '
- 'all bootable devices'
- )),
+ ('<vmId> <nicspec>',
+ 'Hotplug NIC to existing VM',
+ 'nicspec parameters list: r=required, o=optional',
+ 'r device: bridge|sriov|vnlink|bridgeless.',
+ 'r network: network name',
+ 'r macAddr: mac address',
+ 'r nicModel: pv|rtl8139|e1000',
+ 'o bootOrder: <int> - global boot order across '
+ 'all bootable devices'
+ )),
'hotunplugNic': (serv.hotunplugNic,
('<vmId> <nicspec>',
'Hotunplug NIC from existing VM',
@@ -1821,49 +1823,47 @@
'o optional: True|False'
)),
'changeCD': (serv.do_changeCD,
- ('<vmId> <fileName|drivespec>',
- 'Changes the iso image of the cdrom'
- )),
+ ('<vmId> <fileName|drivespec>',
+ 'Changes the iso image of the cdrom'
+ )),
'changeFloppy': (serv.do_changeFloppy,
- ('<vmId> <fileName|drivespec>',
- 'Changes the image of the floppy drive'
- )),
+ ('<vmId> <fileName|drivespec>',
+ 'Changes the image of the floppy drive'
+ )),
'destroy': (serv.do_destroy,
- ('<vmId>',
- 'Stops the emulation and destroys the virtual machine.'
- ' This is not a shutdown.'
- )),
+ ('<vmId>',
+ 'Stops the emulation and destroys the virtual machine.'
+ ' This is not a shutdown.'
+ )),
'shutdown': (serv.do_shutdown,
- ('<vmId> <timeout> <message>',
- 'Stops the emulation and graceful shutdown the virtual'
- ' machine.'
- )),
+ ('<vmId> <timeout> <message>',
+ 'Stops the emulation and graceful shutdown the virtual'
+ ' machine.'
+ )),
'list': (serv.do_list,
- ('[view] [vms:vmId1,vmId2]',
- 'Lists all available machines on the specified '
- 'server.',
- "Optional vms list, should start with 'vms:' and "
- "follow with 'vmId1,vmId2,...'",
- 'Optional views:',
- ' "long" all available configuration info '
- '(Default).',
- ' "table" table output with the fields: vmId, '
- 'vmName, Status and IP.',
- ' "ids" all vmIds.'
- )),
+ ('[view] [vms:vmId1,vmId2]',
+ 'Lists all available machines on the specified server.',
+ "Optional vms list, should start with 'vms:' and follow with"
+ " 'vmId1,vmId2,...'",
+ 'Optional views:',
+ ' "long" all available configuration info (Default).',
+ ' "table" table output with the fields: vmId, vmName, '
+ 'Status and IP.',
+ ' "ids" all vmIds.'
+ )),
'pause': (serv.do_pause,
- ('<vmId>',
- 'Pauses the execution of the virtual machine without '
- 'termination'
- )),
+ ('<vmId>',
+ 'Pauses the execution of the virtual machine without '
+ 'termination'
+ )),
'continue': (serv.do_continue,
- ('<vmId>',
- 'Continues execution after of a paused machine'
- )),
+ ('<vmId>',
+ 'Continues execution after of a paused machine'
+ )),
'reset': (serv.do_reset,
- ('<vmId>',
- 'Sends reset signal to the vm'
- )),
+ ('<vmId>',
+ 'Sends reset signal to the vm'
+ )),
'setVmTicket': (serv.do_setVmTicket,
('<vmId> <password> <sec> [disconnect|keep|fail], '
'[params={}]',
@@ -1875,27 +1875,27 @@
' name:value,name:value'
)),
'migrate': (serv.do_migrate,
- ('vmId=<id> method=<offline|online> src=<host:[port]> '
- 'dst=<host:[port]>',
- 'Migrate a desktop from src machine to dst host using '
- 'the specified ports'
- )),
+ ('vmId=<id> method=<offline|online> src=<host:[port]> '
+ 'dst=<host:[port]>',
+ 'Migrate a desktop from src machine to dst host using '
+ 'the specified ports'
+ )),
'migrateStatus': (serv.do_mStat,
('<vmId>',
- 'Check the progress of current outgoing migration'
+ 'Check the progress of current outgoing migration'
)),
'migrateCancel': (serv.do_mCancel,
- ('<vmId>',
+ ('<vmId>',
'(not implemented) cancel machine migration'
- )),
+ )),
'sendkeys': (serv.do_sendkeys,
- ('<vmId> <key1> ...... <keyN>',
- 'Send the key sequence to the vm'
- )),
+ ('<vmId> <key1> ...... <keyN>',
+ 'Send the key sequence to the vm'
+ )),
'getVdsCapabilities': (serv.do_getCap,
- ('',
- 'Get Capabilities info of the VDS'
- )),
+ ('',
+ 'Get Capabilities info of the VDS'
+ )),
'getVdsCaps': (serv.do_getCap,
('',
'Get Capabilities info of the VDS'
@@ -1906,462 +1906,478 @@
)),
'getVmStats': (serv.do_getVmStats,
('<vmId>',
- 'Get Statistics info on the VM'
+ 'Get Statistics info on the VM'
)),
'getAllVmStats': (serv.do_getAllVmStats,
- ('',
- 'Get Statistics info for all existing VMs'
- )),
+ ('',
+ 'Get Statistics info for all existing VMs'
+ )),
'getVGList': (serv.getVGList,
- ('storageType',
- 'List of all VGs.'
- )),
+ ('storageType',
+ 'List of all VGs.'
+ )),
'getDeviceList': (serv.getDeviceList,
- ('[storageType]',
- 'List of all block devices (optionally - matching '
- 'storageType).'
- )),
+ ('[storageType]',
+ 'List of all block devices (optionally - matching '
+ 'storageType).'
+ )),
'getDeviceInfo': (serv.getDeviceInfo,
- ('<dev-guid>',
- 'Get block storage device info.'
- )),
+ ('<dev-guid>',
+ 'Get block storage device info.'
+ )),
'getDevicesVisibility': (serv.getDevicesVisibility,
- ('<devlist>',
- 'Get visibility of each device listed'
- )),
+ ('<devlist>',
+ 'Get visibility of each device listed'
+ )),
'getVGInfo': (serv.getVGInfo,
- ('<vgUUID>',
- 'Get info of VG'
- )),
+ ('<vgUUID>',
+ 'Get info of VG'
+ )),
'createVG': (serv.createVG,
- ('<sdUUID> <devlist> [force]',
- 'Create a new VG from devices devlist (list of dev '
- 'GUIDs)'
- )),
+ ('<sdUUID> <devlist> [force]',
+ 'Create a new VG from devices devlist (list of dev '
+ 'GUIDs)'
+ )),
'removeVG': (serv.removeVG,
- ('<vgUUID>',
- 'remove the VG identified by its UUID'
- )),
+ ('<vgUUID>',
+ 'remove the VG identified by its UUID'
+ )),
'extendStorageDomain': (serv.extendStorageDomain,
- ('<sdUUID> <spUUID> <devlist>',
- 'Extend the Storage Domain by adding devices devlist '
- '(list of dev GUIDs)'
- )),
+ ('<sdUUID> <spUUID> <devlist>',
+ 'Extend the Storage Domain by adding devices'
+ ' devlist (list of dev GUIDs)'
+ )),
'discoverST': (serv.discoverST,
('ip[:port] [username password]',
'Discover the available iSCSI targetnames on a '
'specified iSCSI portal'
)),
'cleanupUnusedConnections': (serv.cleanupUnusedConnections,
- ('',
- 'Clean up unused iSCSI storage connections'
- )),
+ ('',
+ 'Clean up unused iSCSI storage '
+ 'connections'
+ )),
'connectStorageServer': (serv.connectStorageServer,
- ('<server type> <spUUID> <conList (id=...,'
- 'connection=server:/export_path,portal=...,'
- 'port=...,iqn=...,user=...,password=...'
- '[,initiatorName=...])>',
- 'Connect to a storage low level entity (server)'
- )),
+ ('<server type> <spUUID> <conList (id=...,'
+ 'connection=server:/export_path,portal=...,'
+ 'port=...,iqn=...,user=...,password=...'
+ '[,initiatorName=...])>',
+ 'Connect to a storage low level entity '
+ '(server)'
+ )),
'validateStorageServerConnection':
- (serv.validateStorageServerConnection,
- ('<server type> <spUUID> <conList (id=...,'
- 'connection=server:/export_path,portal=...,port=...'
- ',iqn=...,user=...,password=...'
- '[,initiatorName=...])>',
- 'Validate that we can connect to a storage server'
- )),
+ (serv.validateStorageServerConnection,
+ ('<server type> <spUUID> <conList (id=...,'
+ 'connection=server:/export_path,portal=...,port=...,iqn=...,'
+ 'user=...,password=...[,initiatorName=...])>',
+ 'Validate that we can connect to a storage server'
+ )),
'disconnectStorageServer': (serv.disconnectStorageServer,
- ('<server type> <spUUID> <conList (id=...,'
- 'connection=server:/export_path,portal=...,port=...'
- ',iqn=...,user=...,password=...'
- '[,initiatorName=...])>',
- 'Disconnect from a storage low level entity (server)'
- )),
+ ('<server type> <spUUID> <conList (id=...,'
+ 'connection=server:/export_path,'
+ 'portal=...,port=...,iqn=...,user=...,'
+ 'password=...[,initiatorName=...])>',
+ 'Disconnect from a storage low level '
+ 'entity (server)'
+ )),
'spmStart': (serv.spmStart,
- ('<spUUID> <prevID> <prevLVER> <recoveryMode> '
- '<scsiFencing> <maxHostID> <version>',
- 'Start SPM functionality'
- )),
+ ('<spUUID> <prevID> <prevLVER> <recoveryMode> '
+ '<scsiFencing> <maxHostID> <version>',
+ 'Start SPM functionality'
+ )),
'spmStop': (serv.spmStop,
- ('<spUUID>',
- 'Stop SPM functionality'
- )),
+ ('<spUUID>',
+ 'Stop SPM functionality'
+ )),
'getSpmStatus': (serv.getSpmStatus,
- ('<spUUID>',
- 'Get SPM status'
- )),
+ ('<spUUID>',
+ 'Get SPM status'
+ )),
'acquireDomainLock': (serv.acquireDomainLock,
- ('<spUUID> <sdUUID>',
- 'acquire storage domain lock'
- )),
+ ('<spUUID> <sdUUID>',
+ 'acquire storage domain lock'
+ )),
'releaseDomainLock': (serv.releaseDomainLock,
- ('<spUUID> <sdUUID>',
- 'release storage domain lock'
- )),
+ ('<spUUID> <sdUUID>',
+ 'release storage domain lock'
+ )),
'fenceSpmStorage': (serv.fenceSpmStorage,
- ('<spUUID> <prevID> <prevLVER> ',
- 'fence SPM storage state'
- )),
+ ('<spUUID> <prevID> <prevLVER> ',
+ 'fence SPM storage state'
+ )),
'updateVM': (serv.updateVM,
- ("<spUUID> <vmList> ('vm'=vmUUID,'ovf'='...','"
- "imglist'='imgUUID1+imgUUID2+...') [sdUUID]",
- 'Update VM on pool or Backup domain'
- )),
+ ("<spUUID> <vmList> ('vm'=vmUUID,'ovf'='...','"
+ "imglist'='imgUUID1+imgUUID2+...') [sdUUID]",
+ 'Update VM on pool or Backup domain'
+ )),
'upgradeStoragePool': (serv.upgradeStoragePool,
- ("<spUUID> <targetVersion>",
- 'Upgrade a pool to a new version (Requires a running '
- 'SPM)'
- )),
+ ("<spUUID> <targetVersion>",
+ 'Upgrade a pool to a new version (Requires a '
+ 'running SPM)'
+ )),
'removeVM': (serv.removeVM,
- ("<spUUID> <vmUUID> [sdUUID]",
- 'Remove VM from pool or Backup domain'
- )),
+ ('<spUUID> <vmUUID> [sdUUID]',
+ 'Remove VM from pool or Backup domain'
+ )),
'reconstructMaster': (serv.reconstructMaster,
- ('<spUUID> <poolName> <masterDom> '
- '<domDict>({sdUUID1=status,sdUUID2=status,...}) '
- '<masterVersion>, [<lockPolicy> '
- '<lockRenewalIntervalSec> <leaseTimeSec> '
- '<ioOpTimeoutSec> <leaseRetries>]',
- 'Reconstruct master domain'
- )),
+ ('<spUUID> <poolName> <masterDom> '
+ '<domDict>({sdUUID1=status,sdUUID2=status,...})'
+ ' <masterVersion>, [<lockPolicy> '
+ '<lockRenewalIntervalSec> <leaseTimeSec> '
+ '<ioOpTimeoutSec> <leaseRetries>]',
+ 'Reconstruct master domain'
+ )),
'createStoragePool': (serv.createStoragePool,
- ('<storage type> <spUUID> <poolName> <masterDom> '
- '<domList>(sdUUID1,sdUUID2,...) <masterVersion>, '
- '[<lockPolicy> <lockRenewalIntervalSec> '
- '<leaseTimeSec> <ioOpTimeoutSec> <leaseRetries>]',
- 'Create new storage pool with single/multiple image '
- 'data domain'
- )),
+ ('<storage type> <spUUID> <poolName> <masterDom>'
+ ' <domList>(sdUUID1,sdUUID2,...) '
+ '<masterVersion>, [<lockPolicy> '
+ '<lockRenewalIntervalSec> <leaseTimeSec> '
+ '<ioOpTimeoutSec> <leaseRetries>]',
+ 'Create new storage pool with single/multiple '
+ 'image data domain'
+ )),
'destroyStoragePool': (serv.destroyStoragePool,
- ('<spUUID> <id> <scsi-key>',
- 'Destroy storage pool'
- )),
+ ('<spUUID> <id> <scsi-key>',
+ 'Destroy storage pool'
+ )),
'connectStoragePool': (serv.connectStoragePool,
- ('<spUUID> <id> <scsi-key> [masterUUID] [masterVer]',
- 'Connect a Host to specific storage pool'
- )),
+ ('<spUUID> <id> <scsi-key> [masterUUID] '
+ '[masterVer]',
+ 'Connect a Host to specific storage pool'
+ )),
'disconnectStoragePool': (serv.disconnectStoragePool,
- ('<spUUID> <id> <scsi-key>',
- 'Disconnect a Host from the specific storage pool'
- )),
+ ('<spUUID> <id> <scsi-key>',
+ 'Disconnect a Host from the specific '
+ 'storage pool'
+ )),
'refreshStoragePool': (serv.refreshStoragePool,
- ('<spUUID> <masterDom> <masterVersion>',
- 'Refresh storage pool'
- )),
+ ('<spUUID> <masterDom> <masterVersion>',
+ 'Refresh storage pool'
+ )),
'setStoragePoolDescription': (serv.setStoragePoolDescription,
- ('<spUUID> <descr>',
- 'Set storage pool description'
- )),
+ ('<spUUID> <descr>',
+ 'Set storage pool description'
+ )),
'getStoragePoolInfo': (serv.getStoragePoolInfo,
- ('<spUUID>',
- 'Get storage pool info'
- )),
+ ('<spUUID>',
+ 'Get storage pool info'
+ )),
'createStorageDomain': (serv.createStorageDomain,
- ('<storage type> <domain UUID> <domain name> <param> '
- '<domType> <version>',
- 'Creates new storage domain'
- )),
+ ('<storage type> <domain UUID> <domain name> '
+ '<param> <domType> <version>',
+ 'Creates new storage domain'
+ )),
'setStorageDomainDescription': (serv.setStorageDomainDescription,
- ('<domain UUID> <descr>',
- 'Set storage domain description'
- )),
+ ('<domain UUID> <descr>',
+ 'Set storage domain description'
+ )),
'validateStorageDomain': (serv.validateStorageDomain,
- ('<domain UUID>',
- 'Validate storage domain'
- )),
+ ('<domain UUID>',
+ 'Validate storage domain'
+ )),
'activateStorageDomain': (serv.activateStorageDomain,
- ('<domain UUID> <pool UUID>',
- 'Activate a storage domain that is already a member '
- 'in a storage pool.'
- )),
+ ('<domain UUID> <pool UUID>',
+ 'Activate a storage domain that is already '
+ 'a member in a storage pool.'
+ )),
'deactivateStorageDomain': (serv.deactivateStorageDomain,
- ('<domain UUID> <pool UUID> <new master domain UUID> '
- '<masterVer>',
- 'Deactivate a storage domain. '
- )),
+ ('<domain UUID> <pool UUID> <new master '
+ 'domain UUID> <masterVer>',
+ 'Deactivate a storage domain. '
+ )),
'attachStorageDomain': (serv.attachStorageDomain,
- ('<domain UUID> <pool UUID>',
- 'Attach a storage domain to a storage pool.'
- )),
+ ('<domain UUID> <pool UUID>',
+ 'Attach a storage domain to a storage pool.'
+ )),
'detachStorageDomain': (serv.detachStorageDomain,
- ('<domain UUID> <pool UUID> <new master domain UUID> '
- '<masterVer>',
- 'Detach a storage domain from a storage pool.'
- )),
+ ('<domain UUID> <pool UUID> <new master domain'
+ ' UUID> <masterVer>',
+ 'Detach a storage domain from a storage pool.'
+ )),
'forcedDetachStorageDomain': (serv.forcedDetachStorageDomain,
- ('<domain UUID> <pool UUID>',
- 'Forced detach a storage domain from a storage pool.'
- )),
+ ('<domain UUID> <pool UUID>',
+ 'Forced detach a storage domain from a '
+ 'storage pool.'
+ )),
'formatStorageDomain': (serv.formatStorageDomain,
- ('<domain UUID> [<autoDetach>]',
- 'Format detached storage domain.'
- )),
+ ('<domain UUID> [<autoDetach>]',
+ 'Format detached storage domain.'
+ )),
'getStorageDomainInfo': (serv.getStorageDomainInfo,
- ('<domain UUID>',
- 'Get storage domain info.'
- )),
+ ('<domain UUID>',
+ 'Get storage domain info.'
+ )),
'getStorageDomainStats': (serv.getStorageDomainStats,
- ('<domain UUID>',
- 'Get storage domain statistics.'
- )),
+ ('<domain UUID>',
+ 'Get storage domain statistics.'
+ )),
'getStorageDomainsList': (serv.getStorageDomainsList,
- ('<pool UUID>',
- 'Get storage domains list of pool or all domains if '
- 'pool omitted.'
- )),
+ ('<pool UUID>',
+ 'Get storage domains list of pool or all '
+ 'domains if pool omitted.'
+ )),
'createVolume': (serv.createVolume,
- ('<sdUUID> <spUUID> <imgUUID> <size> <volFormat> '
- '<preallocate> <diskType> <newVolUUID> <descr> '
- '<srcImgUUID> <srcVolUUID>',
- 'Creates new volume or snapshot'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <size> <volFormat> '
+ '<preallocate> <diskType> <newVolUUID> <descr> '
+ '<srcImgUUID> <srcVolUUID>',
+ 'Creates new volume or snapshot'
+ )),
'extendVolume': (serv.extendVolume,
- ('<sdUUID> <spUUID> <imgUUID> <volUUID> '
- '<new disk size>',
- 'Extend volume (SAN only)'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <volUUID> '
+ '<new disk size>',
+ 'Extend volume (SAN only)'
+ )),
'uploadVolume': (serv.uploadVolume,
- ('<sdUUID> <spUUID> <imgUUID> <volUUID> <srcPath> '
- '<size>',
- 'Upload volume file into existing volume'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <volUUID> <srcPath> '
+ '<size>',
+ 'Upload volume file into existing volume'
+ )),
'getVolumePath': (serv.getVolumePath,
- ('<sdUUID> <spUUID> <imgUUID> <volume uuid>',
- 'Returns the path to the requested uuid'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <volume uuid>',
+ 'Returns the path to the requested uuid'
+ )),
'setVolumeDescription': (serv.setVolumeDescription,
- ('<sdUUID> <spUUID> <imgUUID> <volUUID> <Description>',
- 'Sets a new description to the volume'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <volUUID> '
+ '<Description>',
+ 'Sets a new description to the volume'
+ )),
'setVolumeLegality': (serv.setVolumeLegality,
- ('<sdUUID> <spUUID> <imgUUID> <volUUID> <Legality>',
- 'Set volume legality (ILLEGAL/LEGAL).'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <volUUID> '
+ '<Legality>',
+ 'Set volume legality (ILLEGAL/LEGAL).'
+ )),
'deleteVolume': (serv.deleteVolume,
- ('<sdUUID> <spUUID> <imgUUID> <volUUID>,...,<volUUID> '
- '<postZero> [<force>]',
- 'Deletes an volume if its a leaf. Else returns error'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <volUUID>,...,<volUUID>'
+ ' <postZero> [<force>]',
+ 'Deletes an volume if its a leaf. Else returns error'
+ )),
'deleteVolumeByDescr': (serv.deleteVolumeByDescr,
- ('<part of description> <sdUUID> <spUUID> <imgUUID>',
- 'Deletes list of volumes(only leafs) according to '
- 'their description'
- )),
+ ('<part of description> <sdUUID> <spUUID> '
+ '<imgUUID>',
+ 'Deletes list of volumes(only leafs) '
+ 'according to their description'
+ )),
'getVolumeInfo': (serv.getVolumeInfo,
- ('<sdUUID> <spUUID> <imgUUID> <volUUID>',
- 'Returns all the volume details'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <volUUID>',
+ 'Returns all the volume details'
+ )),
'getParent': (serv.getParent,
- ('<sdUUID> <spUUID> <imgUUID> <Disk Image uuid>',
- 'Returns the parent of the volume. Error if no parent'
- ' exists'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <Disk Image uuid>',
+ 'Returns the parent of the volume. Error if no parent'
+ ' exists'
+ )),
'getVolumesList': (serv.getVolumesList,
- ('<sdUUID> <spUUID> [imgUUID]',
- 'Returns list of volumes of imgUUID or sdUUID if '
- 'imgUUID absent'
- )),
+ ('<sdUUID> <spUUID> [imgUUID]',
+ 'Returns list of volumes of imgUUID or sdUUID if '
+ 'imgUUID absent'
+ )),
'getVolumeSize': (serv.getVolumeSize,
- ('<sdUUID> <spUUID> <imgUUID> <volUUID>',
- 'Returns the apparent size and the true size of the '
- 'volume (in bytes)'
- )),
+ ('<sdUUID> <spUUID> <imgUUID> <volUUID>',
+ 'Returns the apparent size and the true size of the'
+ ' volume (in bytes)'
+ )),
'getFileList': (serv.getFileList,
- ('<sdUUID> [pattern]',
- 'Returns files list from ISO domain'
- )),
+ ('<sdUUID> [pattern]',
+ 'Returns files list from ISO domain'
+ )),
'getIsoList': (serv.getIsoList,
- ('<spUUID>',
- 'Returns list of all .iso images in ISO domain'
- )),
+ ('<spUUID>',
+ 'Returns list of all .iso images in ISO domain'
+ )),
'getFloppyList': (serv.getFloppyList,
- ('<spUUID>',
- 'Returns list of all .vfd images in ISO domain'
- )),
+ ('<spUUID>',
+ 'Returns list of all .vfd images in ISO domain'
+ )),
'getImagesList': (serv.getImagesList,
- ('<sdUUID>',
- 'Get list of all images of specific domain'
- )),
+ ('<sdUUID>',
+ 'Get list of all images of specific domain'
+ )),
'getImageDomainsList': (serv.getImageDomainsList,
- ('<spUUID> <imgUUID> [datadomain=True]',
- 'Get list of all data domains in the pool that '
- 'contains imgUUID'
- )),
+ ('<spUUID> <imgUUID> [datadomain=True]',
+ 'Get list of all data domains in the pool '
+ 'that contains imgUUID'
+ )),
'getConnectedStoragePoolsList': (serv.getConnectedStoragePoolsList,
- ('',
- 'Get storage pools list'
- )),
+ ('',
+ 'Get storage pools list'
+ )),
'getTaskInfo': (serv.getTaskInfo,
- ('<TaskID>',
- 'get async task info'
- )),
+ ('<TaskID>',
+ 'get async task info'
+ )),
'getAllTasksInfo': (serv.getAllTasksInfo,
- ('',
- 'get info of all async tasks'
- )),
+ ('',
+ 'get info of all async tasks'
+ )),
'getTaskStatus': (serv.getTaskStatus,
- ('<TaskID>',
- 'get task status'
- )),
+ ('<TaskID>',
+ 'get task status'
+ )),
'getAllTasksStatuses': (serv.getAllTasksStatuses,
- ('',
- 'list statuses of all async tasks'
- )),
+ ('',
+ 'list statuses of all async tasks'
+ )),
'getAllTasks': (serv.getAllTasks,
- ('[tags=\'\']',
- 'get status and information for all async tasks'
- )),
+ ('[tags=\'\']',
+ 'get status and information for all async tasks'
+ )),
'stopTask': (serv.stopTask,
- ('<TaskID>',
- 'stop async task'
- )),
+ ('<TaskID>',
+ 'stop async task'
+ )),
'clearTask': (serv.clearTask,
- ('<TaskID>',
- 'clear async task'
- )),
+ ('<TaskID>',
+ 'clear async task'
+ )),
'revertTask': (serv.revertTask,
- ('<TaskID>',
- 'revert async task'
- )),
+ ('<TaskID>',
+ 'revert async task'
+ )),
'prepareForShutdown': (serv.prepareForShutdown,
- ('', ''
- )),
+ ('', '')),
'setLogLevel': (serv.do_setLogLevel,
- ('<level> [logName][,logName]...', 'set log verbosity'
- ' level (10=DEBUG, 50=CRITICAL'
- )),
+ ('<level> [logName][,logName]...', 'set log verbosity'
+ ' level (10=DEBUG, 50=CRITICAL'
+ )),
'setMOMPolicy': (serv.do_setMOMPolicy,
- ('<policyfile>', 'set MOM policy')),
+ ('<policyfile>', 'set MOM policy')),
'deleteImage': (serv.deleteImage,
- ('<sdUUID> <spUUID> <imgUUID> [<postZero>] [<force>]',
- 'Delete Image folder with all volumes.',
- )),
+ ('<sdUUID> <spUUID> <imgUUID> [<postZero>] [<force>]',
+ 'Delete Image folder with all volumes.',
+ )),
'moveImage': (serv.moveImage,
- ('<spUUID> <srcDomUUID> <dstDomUUID> <imgUUID> <vmUUID>'
- ' <op = COPY_OP/MOVE_OP> [<postZero>] [ <force>]',
- 'Move/Copy image between storage domains within same '
- 'storage pool'
- )),
+ ('<spUUID> <srcDomUUID> <dstDomUUID> <imgUUID> <vmUUID>'
+ ' <op = COPY_OP/MOVE_OP> [<postZero>] [ <force>]',
+ 'Move/Copy image between storage domains within same '
+ 'storage pool'
+ )),
'cloneImageStructure': (serv.cloneImageStructure,
- ('<spUUID> <sdUUID> <imgUUID> <dstSdUUID>',
- 'Clone an image structure from a source domain to a '
- 'destination domain within the same pool.'
- )),
+ ('<spUUID> <sdUUID> <imgUUID> <dstSdUUID>',
+ 'Clone an image structure from a source '
+ 'domain to a destination domain within the '
+ 'same pool.'
+ )),
'syncImageData': (serv.syncImageData,
- ('<spUUID> <sdUUID> <imgUUID> <dstSdUUID> <syncType>',
- 'Synchronize image data between storage domains '
- 'within same pool.'
- )),
+ ('<spUUID> <sdUUID> <imgUUID> <dstSdUUID> '
+ '<syncType>',
+ 'Synchronize image data between storage domains '
+ 'within same pool.'
+ )),
'moveMultiImage': (serv.moveMultiImage,
- ('<spUUID> <srcDomUUID> <dstDomUUID> '
- '<imgList>({imgUUID=postzero,imgUUID=postzero,...})'
- ' <vmUUID> [<force>]',
- 'Move multiple images between storage domains within '
- 'same storage pool'
- )),
+ ('<spUUID> <srcDomUUID> <dstDomUUID> '
+ '<imgList>({imgUUID=postzero,'
+ 'imgUUID=postzero,...}) <vmUUID> [<force>]',
+ 'Move multiple images between storage domains '
+ 'within same storage pool'
+ )),
'copyImage': (serv.copyImage,
- ('<sdUUID> <spUUID> <vmUUID> <srcImgUUID> <srcVolUUID> '
- '<dstImgUUID> <dstVolUUID> <dstDescr> <dstSdUUID> '
- '<volType> <volFormat> <preallocate> [<postZero>] '
- '[<force>]',
- 'Create new template/volume from VM.',
- 'Do it by collapse and copy the whole chain '
- '(baseVolUUID->srcVolUUID)'
- )),
+ ('<sdUUID> <spUUID> <vmUUID> <srcImgUUID> <srcVolUUID> '
+ '<dstImgUUID> <dstVolUUID> <dstDescr> <dstSdUUID> '
+ '<volType> <volFormat> <preallocate> [<postZero>] '
+ '[<force>]',
+ 'Create new template/volume from VM.',
+ 'Do it by collapse and copy the whole chain '
+ '(baseVolUUID->srcVolUUID)'
+ )),
'mergeSnapshots': (serv.mergeSnapshots,
- ('<sdUUID> <spUUID> <vmUUID> <imgUUID> <Ancestor Image '
- 'uuid> <Successor Image uuid> [<postZero>]',
- 'Merge images from successor to ancestor.',
- 'The result is a image named as successor image and '
- 'contents the data of whole successor->ancestor chain'
- )),
+ ('<sdUUID> <spUUID> <vmUUID> <imgUUID> <Ancestor '
+ 'Image uuid> <Successor Image uuid> [<postZero>]',
+ 'Merge images from successor to ancestor.',
+ 'The result is a image named as successor image '
+ 'and contents the data of whole successor->'
+ 'ancestor chain'
+ )),
'desktopLogin': (serv.desktopLogin,
- ('<vmId> <domain> <user> <password>',
- 'Login to vmId desktop using the supplied credentials'
- )),
+ ('<vmId> <domain> <user> <password>',
+ 'Login to vmId desktop using the supplied '
+ 'credentials'
+ )),
'desktopLogoff': (serv.desktopLogoff,
- ('<vmId> <force>',
- 'Lock user session. force should be set to true/false'
- )),
+ ('<vmId> <force>',
+ 'Lock user session. force should be set to '
+ 'true/false'
+ )),
'desktopLock': (serv.desktopLock,
- ('<vmId>',
+ ('<vmId>',
'Logoff current user'
- )),
+ )),
'sendHcCmd': (serv.sendHcCmd,
- ('<vmId> <message>',
- 'Sends a message to a specific VM through Hypercall '
- 'channel'
- )),
+ ('<vmId> <message>',
+ 'Sends a message to a specific VM through Hypercall '
+ 'channel'
+ )),
'hibernate': (serv.hibernate,
- ('<vmId>',
- 'Hibernates the desktop'
- )),
+ ('<vmId>',
+ 'Hibernates the desktop'
+ )),
'monitorCommand': (serv.monitorCommand,
- ('<vmId> <string>',
- 'Send a string containing monitor command to the '
- 'desktop'
- )),
+ ('<vmId> <string>',
+ 'Send a string containing monitor command to the '
+ 'desktop'
+ )),
'getVmsInfo': (serv.do_getVmsInfo,
- ('<spUUID> [<sdUUID> [vmList](vmId1,vmId2,...)]',
- 'Return info of VMs from the pool or a backup domain '
- 'if its sdUUID is given. If vmList is also given, '
- 'return info for these VMs only.'
- )),
+ ('<spUUID> [<sdUUID> [vmList](vmId1,vmId2,...)]',
+ 'Return info of VMs from the pool or a backup domain '
+ 'if its sdUUID is given. If vmList is also given, '
+ 'return info for these VMs only.'
+ )),
'getVmsList': (serv.do_getVmsList,
- ('<spUUID> [sdUUID]',
- 'Get list of VMs from the pool or domain if sdUUID '
- 'given. Run only from the SPM.'
- )),
+ ('<spUUID> [sdUUID]',
+ 'Get list of VMs from the pool or domain if sdUUID '
+ 'given. Run only from the SPM.'
+ )),
'addNetwork': (serv.do_addNetwork,
('bridge=<bridge> [vlan=<number>] [bond=<bond>] '
- 'nics=nic[,nic]',
+ 'nics=nic[,nic]',
'Add a new network to this vds.'
)),
'delNetwork': (serv.do_delNetwork,
('bridge=<bridge> [vlan=<number>] [bond=<bond>] '
- 'nics=nic[,nic]',
+ 'nics=nic[,nic]',
'Remove a network (and parts thereof) from this vds.'
)),
'editNetwork': (serv.do_editNetwork,
('oldBridge=<bridge> newBridge=<bridge> [vlan=<number>]'
- ' [bond=<bond>] nics=nic[,nic]',
+ ' [bond=<bond>] nics=nic[,nic]',
'Replace a network with a new one.'
)),
'setSafeNetworkConfig': (serv.do_setSafeNetworkConfig,
- ('',
- 'declare current network configuration as "safe"'
- )),
+ ('',
+ 'declare current network configuration as '
+ '"safe"'
+ )),
'fenceNode': (serv.do_fenceNode,
('<addr> <port> <agent> <user> <passwd> <action> '
- '[<secure> [<options>]] \n\t<action> is one of '
- '(status, on, off, reboot),\n\t<agent> is one of '
- '(rsa, ilo, ipmilan, drac5, etc)\n\t<secure> '
- '(true|false) may be passed to some agents',
+ '[<secure> [<options>]] \n\t<action> is one of '
+ '(status, on, off, reboot),\n\t<agent> is one of '
+ '(rsa, ilo, ipmilan, drac5, etc)\n\t<secure> '
+ '(true|false) may be passed to some agents',
'send a fencing command to a remote node'
)),
'repoStats': (serv.repoStats,
('',
- "Get the the health status of the active domains"
+ 'Get the the health status of the active domains'
)),
'snapshot': (serv.snapshot,
- ('<vmId> <sdUUID> <imgUUID> <baseVolUUID> <volUUID>',
- "Take a live snapshot"
- )),
+ ('<vmId> <sdUUID> <imgUUID> <baseVolUUID> <volUUID>',
+ 'Take a live snapshot'
+ )),
'setBalloonTarget': (serv.setBalloonTarget,
- ('<vmId> <target>',
- "Set VM's balloon target"
- )),
+ ('<vmId> <target>',
+ "Set VM's balloon target"
+ )),
'diskReplicateStart': (serv.diskReplicateStart,
- ('<vmId> <spUUID> <sdUUID> <imgUUID> <volUUID> '
- '<dstSdUUID>',
- "Start live replication to the destination domain"
- )),
+ ('<vmId> <spUUID> <sdUUID> <imgUUID> <volUUID> '
+ '<dstSdUUID>',
+ 'Start live replication to the destination '
+ 'domain'
+ )),
'diskReplicateFinish': (serv.diskReplicateFinish,
- ('<vmId> <spUUID> <sdUUID> <imgUUID> <volUUID> '
- '<dstSdUUID>',
- "Start live replication to the destination domain"
- )),
+ ('<vmId> <spUUID> <sdUUID> <imgUUID> <volUUID>'
+ ' <dstSdUUID>',
+ 'Start live replication to the destination '
+ 'domain'
+ )),
}
if _glusterEnabled:
commands.update(ge.getGlusterCmdDict(serv))
--
To view, visit http://gerrit.ovirt.org/9992
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic5fa63330f30e76f259aa7edc78f97d911a7d5c3
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Antoni Segura Puimedon <asegurap(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: Fix flake8 warnings for network code.
by asegurap@redhat.com
Antoni Segura Puimedon has uploaded a new change for review.
Change subject: Fix flake8 warnings for network code.
......................................................................
Fix flake8 warnings for network code.
This patch fixes flake8 complaints on the code related to
networking and libvirtvm.
Change-Id: I59cd4d8bb41c1ce71b91b45ff7fe2f10f25eb577
Signed-off-by: Antoni S. Puimedon <asegurap(a)redhat.com>
---
M tests/configNetworkTests.py
M tests/libvirtvmTests.py
M tests/tcTests.py
M vdsm/configNetwork.py
M vdsm/libvirtvm.py
M vdsm/netinfo.py
6 files changed, 218 insertions(+), 235 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/46/9846/1
diff --git a/tests/configNetworkTests.py b/tests/configNetworkTests.py
index 5f7cce4..07291db 100644
--- a/tests/configNetworkTests.py
+++ b/tests/configNetworkTests.py
@@ -189,37 +189,31 @@
@MonkeyPatch(netinfo, 'networks', _fakeNetworks)
def testAddNetworkValidation(self):
_netinfo = {
- 'networks': {
- 'fakent': {'iface': 'fakeint', 'bridged': False},
- 'fakebrnet': {'iface': 'fakebr', 'bridged': True, 'ports':
- ['eth0', 'eth1']},
- 'fakebrnet1': {'iface': 'fakebr1', 'bridged': True,
- 'ports': ['bond00']},
- 'fakebrnet2': {'iface': 'fakebr2', 'bridged': True,
- 'ports': ['eth7.1']},
- 'fakebrnet3': {'iface': 'eth8', 'bridged': False}
- },
- 'vlans': {
- 'eth3.2': {
- 'iface': 'eth3',
- 'addr': '10.10.10.10',
- 'netmask': '255.255.0.0',
- 'mtu': 1500
- },
- 'eth7.1': {
- 'iface': 'eth7',
- 'addr': '192.168.100.1',
- 'netmask': '255.255.255.0',
- 'mtu': 1500
- }
- },
- 'nics': ['eth0', 'eth1', 'eth2', 'eth3', 'eth4', 'eth5',
- 'eth6', 'eth7', 'eth8', 'eth9', 'eth10'],
- 'bondings': {
- 'bond00': {
- 'slaves': ['eth5', 'eth6']
- }
- }
+ 'networks': {
+ 'fakent': {'iface': 'fakeint', 'bridged': False},
+ 'fakebrnet': {'iface': 'fakebr', 'bridged': True,
+ 'ports': ['eth0', 'eth1']},
+ 'fakebrnet1': {'iface': 'fakebr1', 'bridged': True,
+ 'ports': ['bond00']},
+ 'fakebrnet2': {'iface': 'fakebr2', 'bridged': True,
+ 'ports': ['eth7.1']},
+ 'fakebrnet3': {'iface': 'eth8', 'bridged': False}
+ },
+ 'vlans': {
+ 'eth3.2': {'iface': 'eth3',
+ 'addr': '10.10.10.10',
+ 'netmask': '255.255.0.0',
+ 'mtu': 1500
+ },
+ 'eth7.1': {'iface': 'eth7',
+ 'addr': '192.168.100.1',
+ 'netmask': '255.255.255.0',
+ 'mtu': 1500
+ }
+ },
+ 'nics': ['eth0', 'eth1', 'eth2', 'eth3', 'eth4', 'eth5', 'eth6',
+ 'eth7', 'eth8', 'eth9', 'eth10'],
+ 'bondings': {'bond00': {'slaves': ['eth5', 'eth6']}}
}
netinfoIns = netinfo.NetInfo(_netinfo)
@@ -314,12 +308,11 @@
TestCaseBase.__init__(self, *args, **kwargs)
self._tempdir = tempfile.mkdtemp()
self._files = tuple((os.path.join(self._tempdir, bn), init, makeDirty)
- for bn, init, makeDirty in
- (('ifcfg-eth0', self.INITIAL_CONTENT, True),
- ('ifcfg-eth1', None, True),
- ('ifcfg-eth2', None, False),
- ('ifcfg-eth3', self.INITIAL_CONTENT, False),
- ))
+ for bn, init, makeDirty in
+ (('ifcfg-eth0', self.INITIAL_CONTENT, True),
+ ('ifcfg-eth1', None, True),
+ ('ifcfg-eth2', None, False),
+ ('ifcfg-eth3', self.INITIAL_CONTENT, False),))
def __del__(self):
shutil.rmtree(self._tempdir)
diff --git a/tests/libvirtvmTests.py b/tests/libvirtvmTests.py
index 4ed7318..4bd3a77 100644
--- a/tests/libvirtvmTests.py
+++ b/tests/libvirtvmTests.py
@@ -43,7 +43,7 @@
else:
elem = ET.fromstring(element.toprettyxml())
converted = re.sub(' />', '/>',
- ET.tostring(elem.find("./%s" % path)))
+ ET.tostring(elem.find("./%s" % path)))
self.assertEqual(re.sub('\n\s*', ' ', converted).strip(' '),
re.sub('\n\s*', ' ', expectedXML).strip(' '))
@@ -370,7 +370,7 @@
vmConfs = [{}, {'custom': {'viodiskcache': 'writethrough'}}, {}]
for (devConf, xml, blockDev, vmConf) in \
- zip(devConfs, expectedXMLs, blockDevs, vmConfs):
+ zip(devConfs, expectedXMLs, blockDevs, vmConfs):
drive = libvirtvm.Drive(vmConf, self.log, **devConf)
# Patch Drive.blockDev to skip the block device checking.
drive._blockDev = blockDev
diff --git a/tests/tcTests.py b/tests/tcTests.py
index dee8c5b..1983ea1 100644
--- a/tests/tcTests.py
+++ b/tests/tcTests.py
@@ -96,7 +96,7 @@
def addDevice(self):
self._cloneDevice = open('/dev/net/tun', 'r+b')
ifr = struct.pack('16sH', self.devName, self._IFF_TAP |
- self._IFF_NO_PI)
+ self._IFF_NO_PI)
fcntl.ioctl(self._cloneDevice, self._TUNSETIFF, ifr)
self._ifUp()
@@ -106,7 +106,7 @@
def startListener(self, icmp):
self._deviceListener = Process(target=_listenOnDevice,
- args=(self._cloneDevice.fileno(), icmp))
+ args=(self._cloneDevice.fileno(), icmp))
self._deviceListener.start()
def isListenerAlive(self):
@@ -131,15 +131,15 @@
dev.addDevice()
except:
raise SkipTest("'brctl' has failed. Do you have bride-utils "
- "installed?")
+ "installed?")
null = open("/dev/null", "a")
try:
check_call([EXT_TC, 'qdisc', 'add', 'dev', dev.devName, 'ingress'],
- stderr=null)
+ stderr=null)
except:
raise SkipTest("'tc' has failed. Do you have Traffic Control kernel "
- "modules installed?")
+ "modules installed?")
finally:
null.close()
dev.delDevice()
@@ -157,20 +157,20 @@
self._bridge.delDevice()
def _showQdisc(self):
- popen = Popen([EXT_TC, "qdisc", "show", "dev",
- self._bridge.devName], stdout=PIPE)
+ popen = Popen([EXT_TC, "qdisc", "show", "dev", self._bridge.devName],
+ stdout=PIPE)
return popen.stdout.read()
def _addIngress(self):
tc.qdisc_replace_ingress(self._bridge.devName)
self.assertTrue("qdisc ingress" in self._showQdisc(),
- "Could not add an ingress qdisc to the device.")
+ "Could not add an ingress qdisc to the device.")
def testToggleIngress(self):
self._addIngress()
tc.qdisc_del(self._bridge.devName, 'ingress')
self.assertFalse("qdisc ingress" in self._showQdisc(),
- "Could not remove an ingress qdisc from the device.")
+ "Could not remove an ingress qdisc from the device.")
def testQdiscsOfDevice(self):
self._addIngress()
@@ -185,15 +185,17 @@
def testTogglePromisc(self):
tc.set_promisc(self._bridge.devName, True)
self.assertTrue(ethtool.get_flags(self._bridge.devName) &
- ethtool.IFF_PROMISC, "Could not enable promiscuous mode.")
+ ethtool.IFF_PROMISC,
+ "Could not enable promiscuous mode.")
tc.set_promisc(self._bridge.devName, False)
self.assertFalse(ethtool.get_flags(self._bridge.devName) &
- ethtool.IFF_PROMISC, "Could not disable promiscuous mode.")
+ ethtool.IFF_PROMISC,
+ "Could not disable promiscuous mode.")
def testException(self):
self.assertRaises(tc.TrafficControlException, tc.qdisc_del,
- self._bridge.devName + "A", 'ingress')
+ self._bridge.devName + "A", 'ingress')
class TestFilters(TestCaseBase):
@@ -202,13 +204,13 @@
path = os.path.join(dirName, "tc_filter_show.out")
out = file(path).read()
PARSED_FILTERS = (
- tc.Filter(prio='49149', handle='803::800',
- actions=[tc.MirredAction(target='tap1')]),
- tc.Filter(prio='49150', handle='802::800',
- actions=[tc.MirredAction(target='tap2')]),
- tc.Filter(prio='49152', handle='800::800',
- actions=[tc.MirredAction(target='target'),
- tc.MirredAction(target='target2')]))
+ tc.Filter(prio='49149', handle='803::800',
+ actions=[tc.MirredAction(target='tap1')]),
+ tc.Filter(prio='49150', handle='802::800',
+ actions=[tc.MirredAction(target='tap2')]),
+ tc.Filter(prio='49152', handle='800::800',
+ actions=[tc.MirredAction(target='target'),
+ tc.MirredAction(target='target2')]))
self.assertEqual(tuple(tc.filters('bridge', 'parent', out=out)),
PARSED_FILTERS)
@@ -228,9 +230,9 @@
#just an echo request from 192.168.0.52 to 192.168.0.3
_ICMP = unhexlify("001cc0d044dc00215c4d4275080045000054000040004001b921c0a"
- "80034c0a800030800dd200c1400016b52085000000000d7540500000000001011"
- "12131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313"
- "23334353637")
+ "80034c0a800030800dd200c1400016b52085000000000d754050000"
+ "000000101112131415161718191a1b1c1d1e1f20212223242526272"
+ "8292a2b2c2d2e2f3031323334353637")
_tap0 = _Tap()
_tap1 = _Tap()
@@ -274,12 +276,12 @@
def testMirroring(self):
tc.setPortMirroring(self._bridge0.devName, self._bridge1.devName)
- self.assertTrue(self._sendPing(), " Bridge received no mirrored ping "
- "requests.")
+ self.assertTrue(self._sendPing(), "Bridge received no mirrored ping "
+ "requests.")
tc.unsetPortMirroring(self._bridge0.devName, self._bridge1.devName)
- self.assertFalse(self._sendPing(), " Bridge received mirrored ping "
- "requests, but mirroring is unset.")
+ self.assertFalse(self._sendPing(), "Bridge received mirrored ping "
+ "requests, but mirroring is unset.")
def testMirroringWithDistraction(self):
"setting another mirror action should not obstract the first one"
diff --git a/vdsm/configNetwork.py b/vdsm/configNetwork.py
index 53debfa..4b0c9ce 100755
--- a/vdsm/configNetwork.py
+++ b/vdsm/configNetwork.py
@@ -192,9 +192,10 @@
<bridge name='%s'/></network>''' % (escape(netName),
escape(network))
else:
- netXml = '''<network><name>%s</name><forward mode='passthrough'>
- <interface dev='%s'/></forward></network>''' % \
- (escape(netName), escape(iface))
+ netXml = (
+ '''<network><name>%s</name><forward mode='passthrough'>'''
+ '''<interface dev='%s'/></forward></network>''' %
+ (escape(netName), escape(iface)))
if not skipBackup:
self._networkBackup(network)
self._createNetwork(netXml)
@@ -265,8 +266,8 @@
content = cls.DELETED_HEADER + '\n'
logging.debug("backing up network %s: %s", network, content)
- cls.writeBackupFile(netinfo.NET_LOGICALNET_CONF_BACK_DIR,
- network, content)
+ cls.writeBackupFile(netinfo.NET_LOGICALNET_CONF_BACK_DIR, network,
+ content)
def restoreAtomicNetworkBackup(self):
logging.info("Rolling back logical networks configuration "
@@ -312,8 +313,8 @@
for confFile, content in self._backups.iteritems():
if content is None:
utils.rmFile(confFile)
- logging.debug(
- 'Removing empty configuration backup %s', confFile)
+ logging.debug('Removing empty configuration backup %s',
+ confFile)
else:
open(confFile, 'w').write(content)
logging.info('Restored %s', confFile)
@@ -323,7 +324,7 @@
""" Persistently backup ifcfg-* config files """
if os.path.exists('/usr/libexec/ovirt-functions'):
execCmd([constants.EXT_SH, '/usr/libexec/ovirt-functions',
- 'unmount_config', filename])
+ 'unmount_config', filename])
logging.debug("unmounted %s using ovirt", filename)
(dummy, basename) = os.path.split(filename)
@@ -394,7 +395,7 @@
selinux.restorecon(fileName)
except:
logging.debug('ignoring restorecon error in case '
- 'SElinux is disabled', exc_info=True)
+ 'SElinux is disabled', exc_info=True)
def _createConfFile(self, conf, name, ipaddr=None, netmask=None,
gateway=None, bootproto=None, mtu=None, onboot='yes',
@@ -431,7 +432,8 @@
self.writeConfFile(self.NET_CONF_PREF + name, cfg)
def addBridge(self, name, ipaddr=None, netmask=None, mtu=None,
- gateway=None, bootproto=None, delay='0', onboot='yes', **kwargs):
+ gateway=None, bootproto=None, delay='0', onboot='yes',
+ **kwargs):
""" Create ifcfg-* file with proper fields for bridge """
conf = 'TYPE=Bridge\nDELAY=%s\n' % pipes.quote(delay)
self._createConfFile(conf, name, ipaddr, netmask, gateway,
@@ -484,8 +486,8 @@
onboot='yes', **kwargs):
""" Create ifcfg-* file with proper fields for NIC """
_netinfo = netinfo.NetInfo()
- hwaddr = _netinfo.nics[nic].get('permhwaddr') or \
- _netinfo.nics[nic]['hwaddr']
+ hwaddr = (_netinfo.nics[nic].get('permhwaddr') or
+ _netinfo.nics[nic]['hwaddr'])
conf = 'HWADDR=%s\n' % pipes.quote(hwaddr)
if bridge:
@@ -727,11 +729,11 @@
key, value = option.split('=')
if not os.path.exists(
'/sys/class/net/%(bonding)s/bonding/%(key)s' % locals()):
- raise ConfigNetworkError(ne.ERR_BAD_BONDING,
- "%r is not a valid bonding option" % key)
+ raise ConfigNetworkError(ne.ERR_BAD_BONDING, '%r is not a '
+ 'valid bonding option' % key)
except ValueError:
- raise ConfigNetworkError(ne.ERR_BAD_BONDING,
- "Error parsing bonding options: %r" % bondingOptions)
+ raise ConfigNetworkError(ne.ERR_BAD_BONDING, 'Error parsing bonding '
+ 'options: %r' % bondingOptions)
def validateVlanId(vlan):
@@ -758,9 +760,9 @@
# is a non-VLANed network over our iface
for (iface_net, iface_vlan) in ifaces:
if iface_vlan is None:
- raise ConfigNetworkError(ne.ERR_BAD_PARAMS,
- "interface %r already member of network %r" %
- (iface, iface_net))
+ raise ConfigNetworkError(ne.ERR_BAD_PARAMS, 'interface %r '
+ 'already member of network %r' %
+ (iface, iface_net))
ifaces_bridgeless = tuple(ni.getBridgelessNetworksAndVlansForIface(iface))
ifaces_bridged = tuple(ni.getBridgedNetworksAndVlansForIface(iface))
@@ -780,9 +782,8 @@
# Want to add non-VLANed bridged network,
# check whether interface is empty
elif ifaces_bridged or ifaces_bridgeless:
- raise ConfigNetworkError(ne.ERR_BAD_PARAMS,
- "interface %r already has networks" %
- (iface))
+ raise ConfigNetworkError(ne.ERR_BAD_PARAMS, 'interface %r already '
+ 'has networks' % (iface))
def _addNetworkValidation(_netinfo, network, vlan, bonding, nics, ipaddr,
@@ -794,8 +795,8 @@
if bonding and implicitBonding:
pass
elif (vlan or bonding) and not nics:
- raise ConfigNetworkError(ne.ERR_BAD_PARAMS,
- 'vlan/bonding definition requires nics. got: %r' % (nics,))
+ raise ConfigNetworkError(ne.ERR_BAD_PARAMS, 'vlan/bonding definition '
+ 'requires nics. got: %r' % (nics,))
# Check bridge
if bridged:
@@ -811,8 +812,8 @@
# Check ip, netmask, gateway
if ipaddr:
if not netmask:
- raise ConfigNetworkError(ne.ERR_BAD_ADDR,
- "Must specify netmask to configure ip for network")
+ raise ConfigNetworkError(ne.ERR_BAD_ADDR, 'Must specify netmask to'
+ ' configure ip for network')
validateIpAddress(ipaddr)
validateNetmask(netmask)
if gateway:
@@ -820,7 +821,7 @@
else:
if netmask or gateway:
raise ConfigNetworkError(ne.ERR_BAD_ADDR,
- "Specified netmask or gateway but not ip")
+ 'Specified netmask or gateway but not ip')
# Check bonding
if bonding:
@@ -831,10 +832,10 @@
_validateInterNetworkCompatibility(_netinfo, vlan, bonding, bridged)
elif bondingOptions:
raise ConfigNetworkError(ne.ERR_BAD_BONDING,
- "Bonding options specified without bonding")
+ 'Bonding options specified without bonding')
elif len(nics) > 1:
raise ConfigNetworkError(ne.ERR_BAD_BONDING,
- "Multiple nics require a bonding device")
+ 'Multiple nics require a bonding device')
# Check nics
for nic in nics:
@@ -846,21 +847,21 @@
bondingForNics = _netinfo.getBondingForNic(nic)
if bondingForNics and bondingForNics != bonding:
raise ConfigNetworkError(ne.ERR_USED_NIC,
- "nic %s already enslaved to %s" %
- (nic, bondingForNics))
+ 'nic %s already enslaved to %s' %
+ (nic, bondingForNics))
# Make sure nics don't used by vlans if bond requested
if bonding:
vlansForNic = tuple(_netinfo.getVlansForIface(nic))
if vlansForNic:
raise ConfigNetworkError(ne.ERR_USED_NIC,
- "nic %s already used by vlans %s" %
- (nic, vlansForNic))
+ 'nic %s already used by vlans %s' %
+ (nic, vlansForNic))
networksForNic = tuple(_netinfo.getNetworksForIface(nic))
if networksForNic:
raise ConfigNetworkError(ne.ERR_USED_NIC,
- "nic %s already used by networks %s" %
- (nic, networksForNic))
+ 'nic %s already used by networks %s' %
+ (nic, networksForNic))
else:
_validateInterNetworkCompatibility(_netinfo, vlan, nic, bridged)
@@ -888,10 +889,11 @@
# Validation
if not utils.tobool(force):
logging.debug('validating network...')
- _addNetworkValidation(_netinfo, network=network,
- vlan=vlan, bonding=bonding, nics=nics, ipaddr=ipaddr,
- netmask=netmask, gateway=gateway, bondingOptions=bondingOptions,
- bridged=bridged, **options)
+ _addNetworkValidation(_netinfo, network=network, vlan=vlan,
+ bonding=bonding, nics=nics, ipaddr=ipaddr,
+ netmask=netmask, gateway=gateway,
+ bondingOptions=bondingOptions, bridged=bridged,
+ **options)
logging.info("Adding network %s with vlan=%s, bonding=%s, nics=%s,"
" bondingOptions=%s, mtu=%s, bridged=%s, options=%s",
@@ -961,10 +963,9 @@
for nic in nics:
configWriter.addNic(nic, bonding=bonding,
- bridge=bridgeForNic if not bonding else None,
- mtu=max(prevmtu, mtu),
- ipaddr=ipaddr, netmask=netmask,
- gateway=gateway, **options)
+ bridge=bridgeForNic if not bonding else None,
+ mtu=max(prevmtu, mtu), ipaddr=ipaddr,
+ netmask=netmask, gateway=gateway, **options)
# Now we can run ifup for all interfaces
if bonding:
@@ -1003,8 +1004,8 @@
pass
if brifs:
- raise ConfigNetworkError(ne.ERR_USED_BRIDGE,
- 'bridge %s has interfaces %s connected' % (bridge, brifs))
+ raise ConfigNetworkError(ne.ERR_USED_BRIDGE, 'bridge %s has interfaces'
+ ' %s connected' % (bridge, brifs))
def showNetwork(network):
@@ -1052,9 +1053,9 @@
if network in netinfo.bridges():
configWriter.removeBridge(network)
else:
- raise ConfigNetworkError(ne.ERR_BAD_BRIDGE,
- "Cannot delete network %r: It doesn't exist "
- "in the system" % network)
+ raise ConfigNetworkError(ne.ERR_BAD_BRIDGE, "Cannot delete network"
+ " %r: It doesn't exist in the system" %
+ network)
if vlan:
configWriter.removeVlan(vlan, bonding or nics[0])
@@ -1071,9 +1072,9 @@
if bonding:
validateBondingName(bonding)
if set(nics) != set(_netinfo.bondings[bonding]["slaves"]):
- raise ConfigNetworkError(ne.ERR_BAD_NIC,
- "delNetwork: %s are not all nics enslaved to %s" %
- (nics, bonding))
+ raise ConfigNetworkError(ne.ERR_BAD_NIC, 'delNetwork: %s are '
+ 'not all nics enslaved to %s' %
+ (nics, bonding))
if vlan:
validateVlanId(vlan)
if bridged:
@@ -1085,8 +1086,8 @@
# We need to gather NetInfo again to refresh networks info from libvirt.
# The deleted bridge should never be up at this stage.
if network in netinfo.NetInfo().networks:
- raise ConfigNetworkError(ne.ERR_USED_BRIDGE,
- "delNetwork: bridge %s still exists" % network)
+ raise ConfigNetworkError(ne.ERR_USED_BRIDGE, 'delNetwork: bridge %s '
+ 'still exists' % network)
if network and bridged:
configWriter.removeBridge(network)
@@ -1163,8 +1164,8 @@
for network, networkAttrs in networks.iteritems():
if networkAttrs.get('remove', False):
if set(networkAttrs) - set(['remove']):
- raise ConfigNetworkError(ne.ERR_BAD_PARAMS,
- "Cannot specify any attribute when removing")
+ raise ConfigNetworkError(ne.ERR_BAD_PARAMS, 'Cannot specify '
+ 'any attribute when removing')
for bonding, bondingAttrs in bondings.iteritems():
validateBondingName(bonding)
@@ -1173,8 +1174,8 @@
if bondingAttrs.get('remove', False):
if bonding not in _netinfo.bondings:
- raise ConfigNetworkError(ne.ERR_BAD_BONDING,
- 'Cannot remove bonding %s: Doesn\'t exist' % bonding)
+ raise ConfigNetworkError(ne.ERR_BAD_BONDING, "Cannot remove "
+ "bonding %s: Doesn't exist" % bonding)
continue
nics = bondingAttrs.get('nics', None)
@@ -1348,7 +1349,7 @@
if bondings.get(d['bonding']):
d['nics'] = bondings[d['bonding']]['nics']
d['bondingOptions'] = \
- bondings[d['bonding']].get('options', None)
+ bondings[d['bonding']].get('options', None)
# we create a new bond
if network in networksAdded:
netsWithNewBonds.add(network)
@@ -1357,7 +1358,7 @@
d['nics'] = _ni.bondings[d['bonding']]['slaves']
d['bondingOptions'] = \
_ni.bondings[d['bonding']]['cfg'].get(
- 'BONDING_OPTS', None)
+ 'BONDING_OPTS', None)
else:
d['nics'] = [d.pop('nic')]
d['force'] = force
diff --git a/vdsm/libvirtvm.py b/vdsm/libvirtvm.py
index 219e382..6063a84 100644
--- a/vdsm/libvirtvm.py
+++ b/vdsm/libvirtvm.py
@@ -86,36 +86,34 @@
self._vm = vm
self.highWrite = (
- utils.AdvancedStatsFunction(
- self._highWrite,
- config.getint('vars', 'vm_watermark_interval')))
+ utils.AdvancedStatsFunction(
+ self._highWrite,
+ config.getint('vars', 'vm_watermark_interval')))
self.updateVolumes = (
- utils.AdvancedStatsFunction(
- self._updateVolumes,
- config.getint('irs', 'vol_size_sample_interval')))
+ utils.AdvancedStatsFunction(
+ self._updateVolumes,
+ config.getint('irs', 'vol_size_sample_interval')))
self.sampleCpu = (
- utils.AdvancedStatsFunction(
- self._sampleCpu,
- config.getint('vars', 'vm_sample_cpu_interval'),
- config.getint('vars', 'vm_sample_cpu_window')))
+ utils.AdvancedStatsFunction(
+ self._sampleCpu,
+ config.getint('vars', 'vm_sample_cpu_interval'),
+ config.getint('vars', 'vm_sample_cpu_window')))
self.sampleDisk = (
- utils.AdvancedStatsFunction(
- self._sampleDisk,
- config.getint('vars', 'vm_sample_disk_interval'),
- config.getint('vars', 'vm_sample_disk_window')))
+ utils.AdvancedStatsFunction(
+ self._sampleDisk,
+ config.getint('vars', 'vm_sample_disk_interval'),
+ config.getint('vars', 'vm_sample_disk_window')))
self.sampleDiskLatency = (
- utils.AdvancedStatsFunction(
- self._sampleDiskLatency,
- config.getint('vars',
- 'vm_sample_disk_latency_interval'),
- config.getint('vars',
- 'vm_sample_disk_latency_window')))
+ utils.AdvancedStatsFunction(
+ self._sampleDiskLatency,
+ config.getint('vars', 'vm_sample_disk_latency_interval'),
+ config.getint('vars', 'vm_sample_disk_latency_window')))
self.sampleNet = (
- utils.AdvancedStatsFunction(
- self._sampleNet,
- config.getint('vars', 'vm_sample_net_interval'),
- config.getint('vars', 'vm_sample_net_window')))
+ utils.AdvancedStatsFunction(
+ self._sampleNet,
+ config.getint('vars', 'vm_sample_net_interval'),
+ config.getint('vars', 'vm_sample_net_window')))
self.addStatsFunction(
self.highWrite, self.updateVolumes, self.sampleCpu,
@@ -149,8 +147,9 @@
for vmDrive in self._vm._devices[vm.DISK_DEVICES]:
if vmDrive.device == 'disk' and vmDrive.isVdsmImage():
- volSize = self._vm.cif.irs.getVolumeSize(vmDrive.domainID,
- vmDrive.poolID, vmDrive.imageID, vmDrive.volumeID)
+ volSize = self._vm.cif.irs.getVolumeSize(
+ vmDrive.domainID, vmDrive.poolID, vmDrive.imageID,
+ vmDrive.volumeID)
if volSize['status']['code'] != 0:
continue
@@ -276,10 +275,10 @@
def _avgLatencyCalc(sData, eData):
readLatency = (0 if not (eData['rd_operations'] -
sData['rd_operations'])
- else (eData['rd_total_times'] -
- sData['rd_total_times']) /
- (eData['rd_operations'] -
- sData['rd_operations']))
+ else (eData['rd_total_times'] -
+ sData['rd_total_times']) /
+ (eData['rd_operations'] -
+ sData['rd_operations']))
writeLatency = (0 if not (eData['wr_operations'] -
sData['wr_operations'])
else (eData['wr_total_times'] -
@@ -430,10 +429,9 @@
dataProgress = calculateProgress(dataRemaining, dataTotal)
memProgress = calculateProgress(memRemaining, memTotal)
- self._vm.log.info(
- 'Migration Progress: %s seconds elapsed, '
- '%s%% of data processed, %s%% of mem processed'
- % (timeElapsed / 1000, dataProgress, memProgress))
+ self._vm.log.info('Migration Progress: %s seconds elapsed, %s%% of'
+ 'data processed, %s%% of mem processed' %
+ (timeElapsed / 1000, dataProgress, memProgress))
def stop(self):
self._vm.log.debug('stopping migration monitor thread')
@@ -501,7 +499,7 @@
self._vm._dom.migrateToURI2(
duri, muri, None,
libvirt.VIR_MIGRATE_LIVE |
- libvirt.VIR_MIGRATE_PEER2PEER,
+ libvirt.VIR_MIGRATE_PEER2PEER,
None, maxBandwidth)
finally:
t.cancel()
@@ -714,7 +712,7 @@
"""
if utils.tobool(self.conf.get('acpiEnable', 'true')):
self.dom.appendChild(self.doc.createElement('features')) \
- .appendChild(self.doc.createElement('acpi'))
+ .appendChild(self.doc.createElement('acpi'))
def appendCpu(self):
"""
@@ -864,7 +862,7 @@
listen = self.doc.createElement('listen')
listen.setAttribute('type', 'network')
listen.setAttribute('network', netinfo.LIBVIRT_NET_PREFIX +
- self.conf.get('displayNetwork'))
+ self.conf.get('displayNetwork'))
graphics.appendChild(listen)
else:
graphics.setAttribute('listen', '0')
@@ -1099,8 +1097,7 @@
for the next LV extension.
"""
return (self.volExtensionChunk +
- ((self.apparentsize + constants.MEGAB - 1) /
- constants.MEGAB))
+ ((self.apparentsize + constants.MEGAB - 1) / constants.MEGAB))
@property
def blockDev(self):
@@ -1203,9 +1200,8 @@
diskelem.appendChild(driver)
elif self.device == 'floppy':
if (self.path and
- not utils.getUserPermissions(
- constants.QEMU_PROCESS_USER,
- self.path)['write']):
+ not utils.getUserPermissions(constants.QEMU_PROCESS_USER,
+ self.path)['write']):
diskelem.appendChild(doc.createElement('readonly'))
return diskelem
@@ -1337,13 +1333,12 @@
domxml.appendFeatures()
domxml.appendCpu()
if utils.tobool(self.conf.get('vmchannel', 'true')):
- domxml._appendAgentDevice(
- self._guestSocketFile.decode('utf-8'),
- _VMCHANNEL_DEVICE_NAME)
+ domxml._appendAgentDevice(self._guestSocketFile.decode('utf-8'),
+ _VMCHANNEL_DEVICE_NAME)
if utils.tobool(self.conf.get('qgaEnable', 'true')):
domxml._appendAgentDevice(
- self._qemuguestSocketFile.decode('utf-8'),
- _QEMU_GA_DEVICE_NAME)
+ self._qemuguestSocketFile.decode('utf-8'),
+ _QEMU_GA_DEVICE_NAME)
domxml.appendInput()
domxml.appendGraphics()
@@ -1421,9 +1416,8 @@
# So, run it after you have this info
self._initVmStats()
self.guestAgent = guestIF.GuestAgent(
- self._guestSocketFile,
- self.cif.channelListener, self.log,
- connect=utils.tobool(self.conf.get('vmchannel', 'true')))
+ self._guestSocketFile, self.cif.channelListener, self.log,
+ connect=utils.tobool(self.conf.get('vmchannel', 'true')))
self._guestCpuRunning = (self._dom.info()[0] ==
libvirt.VIR_DOMAIN_RUNNING)
@@ -1503,8 +1497,8 @@
self.log.debug(domxml)
if 'recover' in self.conf:
self._dom = NotifyingVirDomain(
- self._connection.lookupByUUIDString(self.id),
- self._timeoutExperienced)
+ self._connection.lookupByUUIDString(self.id),
+ self._timeoutExperienced)
# Reinitialize the merge statuses
self._checkMerge()
elif 'restoreState' in self.conf:
@@ -1517,8 +1511,8 @@
self.cif.teardownVolumePath(self.conf['restoreState'])
self._dom = NotifyingVirDomain(
- self._connection.lookupByUUIDString(self.id),
- self._timeoutExperienced)
+ self._connection.lookupByUUIDString(self.id),
+ self._timeoutExperienced)
else:
flags = libvirt.VIR_DOMAIN_NONE
if 'launchPaused' in self.conf:
@@ -1526,8 +1520,8 @@
self.conf['pauseCode'] = 'NOERR'
del self.conf['launchPaused']
self._dom = NotifyingVirDomain(
- self._connection.createXML(domxml, flags),
- self._timeoutExperienced)
+ self._connection.createXML(domxml, flags),
+ self._timeoutExperienced)
if self._dom.UUIDString() != self.id:
raise Exception('libvirt bug 603494')
hooks.after_vm_start(self._dom.XMLDesc(0), self.conf)
@@ -1578,7 +1572,7 @@
# In any case we need below rollback for all kind of failures.
except Exception, e:
self.log.error("setPortMirroring for network %s failed",
- network, exc_info=True)
+ network, exc_info=True)
nicParams['portMirroring'] = mirroredNetworks
self.hotunplugNic({'nic': nicParams})
return {'status':
@@ -1887,8 +1881,8 @@
# Would fail if migration isn't successful,
# or restart vdsm if connection to libvirt was lost
self._dom = NotifyingVirDomain(
- self._connection.lookupByUUIDString(self.id),
- self._timeoutExperienced)
+ self._connection.lookupByUUIDString(self.id),
+ self._timeoutExperienced)
except Exception, e:
# Improve description of exception
if not self._incomingMigrationFinished.isSet():
@@ -2067,7 +2061,7 @@
try:
newDrives[vmDevName]["path"] = \
- self.cif.prepareVolumePath(newDrives[vmDevName])
+ self.cif.prepareVolumePath(newDrives[vmDevName])
except Exception:
_rollbackDrives(newDrives)
self.log.error("Unable to prepare the volume path "
@@ -2211,9 +2205,8 @@
def mergeStatus(self):
def _filterInternalInfo(mergeStatus):
- return dict(
- (k, v) for k, v in mergeStatus.iteritems()
- if k not in ("path", "basePath"))
+ return dict((k, v) for k, v in mergeStatus.iteritems()
+ if k not in ("path", "basePath"))
mergeStatus = [_filterInternalInfo(x)
for x in self.conf.get('liveMerge', [])]
@@ -2440,8 +2433,7 @@
try:
self._dom.updateDeviceFlags(
- diskelem.toxml(),
- libvirt.VIR_DOMAIN_DEVICE_MODIFY_FORCE)
+ diskelem.toxml(), libvirt.VIR_DOMAIN_DEVICE_MODIFY_FORCE)
except:
self.log.debug("updateDeviceFlags failed", exc_info=True)
self.cif.teardownVolumePath(drivespec)
@@ -2454,7 +2446,7 @@
def setTicket(self, otp, seconds, connAct, params):
graphics = _domParseStr(self._dom.XMLDesc(0)).childNodes[0]. \
- getElementsByTagName('graphics')[0]
+ getElementsByTagName('graphics')[0]
graphics.setAttribute('passwd', otp)
if int(seconds) > 0:
validto = time.strftime('%Y-%m-%dT%H:%M:%S',
@@ -2470,14 +2462,13 @@
def _reviveTicket(self, newlife):
"""Revive an existing ticket, if it has expired or about to expire"""
graphics = _domParseStr(
- self._dom.XMLDesc(libvirt.VIR_DOMAIN_XML_SECURE)). \
- childNodes[0].getElementsByTagName('graphics')[0]
+ self._dom.XMLDesc(libvirt.VIR_DOMAIN_XML_SECURE)). \
+ childNodes[0].getElementsByTagName('graphics')[0]
validto = max(time.strptime(graphics.getAttribute('passwdValidTo'),
'%Y-%m-%dT%H:%M:%S'),
time.gmtime(time.time() + newlife))
graphics.setAttribute(
- 'passwdValidTo',
- time.strftime('%Y-%m-%dT%H:%M:%S', validto))
+ 'passwdValidTo', time.strftime('%Y-%m-%dT%H:%M:%S', validto))
graphics.setAttribute('connected', 'keep')
self._dom.updateDeviceFlags(graphics.toxml(), 0)
@@ -2528,7 +2519,7 @@
def _getUnderlyingVmInfo(self):
self._lastXMLDesc = self._dom.XMLDesc(0)
devxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]
+ getElementsByTagName('devices')[0]
self._devXmlHash = str(hash(devxml.toxml()))
return self._lastXMLDesc
@@ -2580,7 +2571,7 @@
if self._dom:
try:
self._dom.destroyFlags(
- libvirt.VIR_DOMAIN_DESTROY_GRACEFUL)
+ libvirt.VIR_DOMAIN_DESTROY_GRACEFUL)
except libvirt.libvirtError, e:
if (e.get_error_code() ==
libvirt.VIR_ERR_OPERATION_FAILED):
@@ -2640,7 +2631,7 @@
def _getBalloonInfo(self):
for dev in self.conf['devices']:
if dev['type'] == vm.BALLOON_DEVICES and \
- dev['specParams']['model'] != 'none':
+ dev['specParams']['model'] != 'none':
max_mem = int(self.conf.get('memSize')) * 1024
cur_mem = dev.get('target', max_mem)
return {'balloon_max': max_mem, 'balloon_cur': cur_mem}
@@ -2671,7 +2662,7 @@
else:
for dev in self.conf['devices']:
if dev['type'] == vm.BALLOON_DEVICES and \
- dev['specParams']['model'] != 'none':
+ dev['specParams']['model'] != 'none':
dev['target'] = target
# persist the target value to make it consistent after recovery
self.saveState()
@@ -2707,7 +2698,7 @@
return False
devsxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]
+ getElementsByTagName('devices')[0]
for x in devsxml.childNodes:
# Ignore empty nodes and devices without address
@@ -2732,8 +2723,8 @@
Obtain controller devices info from libvirt.
"""
ctrlsxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]. \
- getElementsByTagName('controller')
+ getElementsByTagName('devices')[0]. \
+ getElementsByTagName('controller')
for x in ctrlsxml:
# Ignore controller devices without address
if not x.getElementsByTagName('address'):
@@ -2779,8 +2770,8 @@
Obtain balloon device info from libvirt.
"""
balloonxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]. \
- getElementsByTagName('memballoon')
+ getElementsByTagName('devices')[0]. \
+ getElementsByTagName('memballoon')
for x in balloonxml:
# Ignore balloon devices without address.
if not x.getElementsByTagName('address'):
@@ -2805,8 +2796,8 @@
Obtain watchdog device info from libvirt.
"""
watchdogxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]. \
- getElementsByTagName('watchdog')
+ getElementsByTagName('devices')[0]. \
+ getElementsByTagName('watchdog')
for x in watchdogxml:
# PCI watchdog has "address" different from ISA watchdog
@@ -2830,8 +2821,7 @@
Obtain video devices info from libvirt.
"""
videosxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]. \
- getElementsByTagName('video')
+ getElementsByTagName('devices')[0].getElementsByTagName('video')
for x in videosxml:
alias = x.getElementsByTagName('alias')[0].getAttribute('name')
# Get video card address
@@ -2859,8 +2849,7 @@
Obtain sound devices info from libvirt.
"""
soundsxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]. \
- getElementsByTagName('sound')
+ getElementsByTagName('devices')[0].getElementsByTagName('sound')
for x in soundsxml:
alias = x.getElementsByTagName('alias')[0].getAttribute('name')
# Get sound card address
@@ -2888,8 +2877,7 @@
Obtain block devices info from libvirt.
"""
disksxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]. \
- getElementsByTagName('disk')
+ getElementsByTagName('devices')[0].getElementsByTagName('disk')
# FIXME! We need to gather as much info as possible from the libvirt.
# In the future we can return this real data to management instead of
# vm's conf
@@ -2954,7 +2942,7 @@
Obtain display port info from libvirt.
"""
graphics = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('graphics')[0]
+ getElementsByTagName('graphics')[0]
port = graphics.getAttribute('port')
if port:
self.conf['displayPort'] = port
@@ -2968,8 +2956,8 @@
"""
# TODO use xpath instead of parseString (here and elsewhere)
ifsxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
- getElementsByTagName('devices')[0]. \
- getElementsByTagName('interface')
+ getElementsByTagName('devices')[0]. \
+ getElementsByTagName('interface')
for x in ifsxml:
devType = x.getAttribute('type')
name = x.getElementsByTagName('target')[0].getAttribute('dev')
@@ -3065,8 +3053,7 @@
self.log.debug('migration destination: waiting for VM creation')
self._vmCreationEvent.wait()
prepareTimeout = self._loadCorrectedTimeout(
- config.getint('vars', 'migration_listener_timeout'),
- doubler=5)
+ config.getint('vars', 'migration_listener_timeout'), doubler=5)
self.log.debug('migration destination: waiting %ss '
'for path preparation', prepareTimeout)
self._pathsPreparedEvent.wait(prepareTimeout)
diff --git a/vdsm/netinfo.py b/vdsm/netinfo.py
index e2959e4..4935994 100644
--- a/vdsm/netinfo.py
+++ b/vdsm/netinfo.py
@@ -110,7 +110,7 @@
def slaves(bonding):
return [b.split('/')[-1].split('_', 1)[-1] for b in
- glob.glob('/sys/class/net/' + bonding + '/slave_*')]
+ glob.glob('/sys/class/net/' + bonding + '/slave_*')]
def ports(bridge):
@@ -295,8 +295,8 @@
devname = netname
try:
d['networks'][netname] = {'ports': ports(devname),
- 'stp': bridge_stp_state(devname),
- 'cfg': getIfaceCfg(devname), }
+ 'stp': bridge_stp_state(devname),
+ 'cfg': getIfaceCfg(devname), }
except OSError, e:
# If the bridge reported by libvirt does not exist anymore, do
# not report it, as this already assures that the bridge is not
@@ -317,13 +317,13 @@
d['networks'][netname]['interface'] = devname
try:
- d['networks'][netname].update({
- 'iface': devname,
- 'bridged': nets[netname]['bridged'],
- 'addr': getaddr(devname),
- 'netmask': getnetmask(devname),
- 'gateway': routes.get(devname, '0.0.0.0'),
- 'mtu': getMtu(devname), })
+ d['networks'][netname].update(
+ {'iface': devname,
+ 'bridged': nets[netname]['bridged'],
+ 'addr': getaddr(devname),
+ 'netmask': getnetmask(devname),
+ 'gateway': routes.get(devname, '0.0.0.0'),
+ 'mtu': getMtu(devname), })
except OSError, e:
if e.errno == errno.ENOENT:
logging.info('Obtaining info for net %s.', devname,
@@ -352,25 +352,25 @@
'mtu': getMtu(nic),
'cfg': getIfaceCfg(nic),
})
- for nic in nics()])
+ for nic in nics()])
paddr = permAddr()
for nic, nd in d['nics'].iteritems():
if paddr.get(nic):
nd['permhwaddr'] = paddr[nic]
d['bondings'] = dict([(bond, {'slaves': slaves(bond),
- 'addr': getaddr(bond),
- 'netmask': getnetmask(bond),
- 'hwaddr': gethwaddr(bond),
- 'cfg': getIfaceCfg(bond),
- 'mtu': getMtu(bond)})
- for bond in bondings()])
+ 'addr': getaddr(bond),
+ 'netmask': getnetmask(bond),
+ 'hwaddr': gethwaddr(bond),
+ 'cfg': getIfaceCfg(bond),
+ 'mtu': getMtu(bond)})
+ for bond in bondings()])
d['vlans'] = dict([(vlan, {'iface': vlan.split('.')[0],
'addr': getaddr(vlan),
'netmask': getnetmask(vlan),
'mtu': getMtu(vlan),
'cfg': getIfaceCfg(vlan),
})
- for vlan in vlans()])
+ for vlan in vlans()])
return d
@@ -513,4 +513,4 @@
:rtype: List
"""
return [netname for (netname, net) in networks().iteritems()
- if not 'bridge' in net]
+ if not 'bridge' in net]
--
To view, visit http://gerrit.ovirt.org/9846
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I59cd4d8bb41c1ce71b91b45ff7fe2f10f25eb577
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Antoni Segura Puimedon <asegurap(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: Refactor mom init error flow
by smizrahi@redhat.com
Saggi Mizrahi has uploaded a new change for review.
Change subject: Refactor mom init error flow
......................................................................
Refactor mom init error flow
Splitting a log to to log invocation is bad because it could potentially
separate the 2 log lines. Further more, it usually points out to a bad
flow if you only sometimes need to log in the same flow so you resort to
such tricks.
- Add proper exception when MomThread fails to initialize
- Make the two error flows clear and have each logged properly
Change-Id: I03ff6057cdbb22b88ed2b5766bda399651c4d058
Signed-off-by: Saggi Mizrahi <smizrahi(a)redhat.com>
---
M vdsm/clientIF.py
M vdsm/momIF.py
2 files changed, 25 insertions(+), 10 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/81/9481/1
diff --git a/vdsm/clientIF.py b/vdsm/clientIF.py
index 82603af..0bd686f 100644
--- a/vdsm/clientIF.py
+++ b/vdsm/clientIF.py
@@ -29,7 +29,7 @@
from storage.hsm import HSM
from vdsm.config import config
import ksm
-from momIF import MomThread
+from momIF import MomThread, isMomAvailable
from vdsm import netinfo
from vdsm.define import doneCode, errCode
import libvirt
@@ -189,14 +189,20 @@
'Please make sure it is installed.')
def _prepareMOM(self):
- try:
- momconf = config.get("mom", "conf")
- self.mom = MomThread(momconf)
- except:
- self.log.warn("MOM initialization failed and fall "
- "back to KsmMonitor")
- self.log.debug("Details:", exc_info=True)
- self.ksmMonitor = ksm.KsmMonitorThread(self)
+ momconf = config.get("mom", "conf")
+
+ if isMomAvailable():
+ try:
+ self.mom = MomThread(momconf)
+ return
+ except:
+ self.log.warn("MOM initialization failed and fall "
+ "back to KsmMonitor", exc_info=True)
+
+ else:
+ self.log.warn("MOM is not available, fallback to KsmMonitor")
+
+ self.ksmMonitor = ksm.KsmMonitorThread(self)
def _syncLibvirtNetworks(self):
"""
diff --git a/vdsm/momIF.py b/vdsm/momIF.py
index 827e9e4..807daef 100644
--- a/vdsm/momIF.py
+++ b/vdsm/momIF.py
@@ -27,11 +27,20 @@
_momAvailable = False
+class MomNotAvailableError(RuntimeError):
+ pass
+
+
+def isMomAvailable():
+ return _momAvailable
+
+
class MomThread(threading.Thread):
def __init__(self, momconf):
if not _momAvailable:
- raise Exception("MOM is not available")
+ raise MomNotAvailableError()
+
self.log = logging.getLogger("MOM")
self.log.info("Starting up MOM")
self._mom = mom.MOM(momconf)
--
To view, visit http://gerrit.ovirt.org/9481
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I03ff6057cdbb22b88ed2b5766bda399651c4d058
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Saggi Mizrahi <smizrahi(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: [WIP] a more delicate rollback
by Dan Kenigsberg
Dan Kenigsberg has uploaded a new change for review.
Change subject: [WIP] a more delicate rollback
......................................................................
[WIP] a more delicate rollback
If things go wrong during setupNetwork, we try to revert the networking
state to what it used to be. Until this patch, we stopped the network
service, reverted all ifcfg-* files, and restarted networking.
This procedure disruppted all connection, even those unrelated to the
ones being set up.
With this change, we are taking down only affected devices, and revert
them to their pre-setupNetwork state.
Change-Id: If413164a34a1e6f0d7e4ef75ba931e630a26e666
Signed-off-by: Dan Kenigsberg <danken(a)redhat.com>
---
M vdsm/configNetwork.py
1 file changed, 37 insertions(+), 2 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/06/9506/1
diff --git a/vdsm/configNetwork.py b/vdsm/configNetwork.py
index 09d70ac..6e8649c 100755
--- a/vdsm/configNetwork.py
+++ b/vdsm/configNetwork.py
@@ -320,6 +320,41 @@
open(confFile, 'w').write(content)
logging.info('Restored %s', confFile)
+ def _devType(self, content):
+ if re.search('^TYPE=Bridge$', content, re.MULTILINE):
+ return "Bridge"
+ elif re.search('^VLAN=yes$', content, re.MULTILINE):
+ return "Vlan"
+ else:
+ return "Other"
+
+ def _sortModifiedIfcfgs(self):
+ devdict = {'Bridge': [],
+ 'Vlan': [],
+ 'Other': []}
+ for confFile, _ in self._backups.iteritems():
+ try:
+ content = file(confFile).read()
+ except IOError as e:
+ if e.errno == os.errno.ENOENT:
+ continue
+ else:
+ raise
+ dev = confFile[len(self.NET_CONF_PREF):]
+
+ devdict[self._devType(content)].append(dev)
+
+ return nicSort(devdict['Other']) + devdict['Vlan'] + \
+ devdict['Bridge']
+
+ def _stopAtomicDevices(self):
+ for dev in reversed(self._sortModifiedIfcfgs()):
+ ifdown(dev)
+
+ def _startAtomicDevices(self):
+ for dev in self._sortModifiedIfcfgs():
+ ifup(dev)
+
@classmethod
def _persistentBackup(cls, filename):
""" Persistently backup ifcfg-* config files """
@@ -374,12 +409,12 @@
if not self._backups and not self._networksBackups:
return
- execCmd(['/etc/init.d/network', 'stop'])
+ self._stopAtomicDevices()
self.restoreAtomicNetworkBackup()
self.restoreAtomicBackup()
- execCmd(['/etc/init.d/network', 'start'])
+ self._startAtomicDevices()
@classmethod
def clearBackups(cls):
--
To view, visit http://gerrit.ovirt.org/9506
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If413164a34a1e6f0d7e4ef75ba931e630a26e666
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Dan Kenigsberg <danken(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: fix: sockets/cores retrieval from cpu topology
by barumuga@redhat.com
Hello Ayal Baron, Timothy Asir, Saggi Mizrahi, Federico Simoncelli, Dan Kenigsberg,
I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/9386
to review the following change.
Change subject: fix: sockets/cores retrieval from cpu topology
......................................................................
fix: sockets/cores retrieval from cpu topology
topology tag in capabilities from libvirt is missing in some
environment. This fix assumes default sockets and cores as 1 when
topology tag missing
Change-Id: I343db03f9cf6eefc28f993d269c6c082e7695af5
Signed-off-by: Bala.FA <barumuga(a)redhat.com>
---
M vdsm/caps.py
1 file changed, 8 insertions(+), 4 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/86/9386/1
diff --git a/vdsm/caps.py b/vdsm/caps.py
index fdb06b1..c77a05c 100644
--- a/vdsm/caps.py
+++ b/vdsm/caps.py
@@ -111,12 +111,16 @@
caps = minidom.parseString(c.getCapabilities())
host = caps.getElementsByTagName('host')[0]
cpu = host.getElementsByTagName('cpu')[0]
+ topology = cpu.getElementsByTagName('topology')
+ sockets = 1
+ cores = 1
+ if topology:
+ sockets = int(topology[0].getAttribute('sockets'))
+ cores = int(topology[0].getAttribute('cores'))
cells = host.getElementsByTagName('cells')[0]
topology = {'cells': int(cells.getAttribute('num')),
- 'sockets': int(cpu.getElementsByTagName('topology')[0].
- getAttribute('sockets')),
- 'cores': int(cpu.getElementsByTagName('topology')[0].
- getAttribute('cores')),
+ 'sockets': sockets,
+ 'cores': cores,
'threads': cells.getElementsByTagName('cpu').length}
return topology
--
To view, visit http://gerrit.ovirt.org/9386
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I343db03f9cf6eefc28f993d269c6c082e7695af5
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Bala.FA <barumuga(a)redhat.com>
Gerrit-Reviewer: Ayal Baron <abaron(a)redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Federico Simoncelli <fsimonce(a)redhat.com>
Gerrit-Reviewer: Saggi Mizrahi <smizrahi(a)redhat.com>
Gerrit-Reviewer: Timothy Asir <tjeyasin(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: adding log print before svdsm dies
by ybronhei@redhat.com
Yaniv Bronhaim has uploaded a new change for review.
Change subject: adding log print before svdsm dies
......................................................................
adding log print before svdsm dies
Change-Id: I306836e6faec2c1e424ad445279427598625ed80
Signed-off-by: Yaniv Bronhaim <ybronhei(a)redhat.com>
---
M vdsm/supervdsmServer.py
1 file changed, 3 insertions(+), 2 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/14/9814/1
diff --git a/vdsm/supervdsmServer.py b/vdsm/supervdsmServer.py
index 1601ba5..25e9422 100755
--- a/vdsm/supervdsmServer.py
+++ b/vdsm/supervdsmServer.py
@@ -293,13 +293,14 @@
return mkimage.removeFs(path)
-def __pokeParent(parentPid, address):
+def __pokeParent(parentPid, address, log):
try:
while True:
os.kill(parentPid, 0)
sleep(2)
except Exception:
utils.rmFile(address)
+ log.debug("Killing SuperVdsm Process")
os.kill(os.getpid(), signal.SIGTERM)
@@ -350,7 +351,7 @@
log.debug("Setting up keep alive thread")
monThread = threading.Thread(target=__pokeParent,
- args=[int(parentPid), address])
+ args=[int(parentPid), address, log])
monThread.setDaemon(True)
monThread.start()
--
To view, visit http://gerrit.ovirt.org/9814
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I306836e6faec2c1e424ad445279427598625ed80
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Yaniv Bronhaim <ybronhei(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: vdsm: Attaching a console should be controllable
by Vinzenz Feenstra
Vinzenz Feenstra has uploaded a new change for review.
Change subject: vdsm: Attaching a console should be controllable
......................................................................
vdsm: Attaching a console should be controllable
Added a new VmParameter 'attachConsole' which defines
whether or not a console should be attached upon creation
Change-Id: Ie92b0ad693fdde7eae9091d944403ac4477eb186
Signed-off-by: Vinzenz Feenstra <vfeenstr(a)redhat.com>
---
M vdsm/libvirtvm.py
M vdsm_api/vdsmapi-schema.json
2 files changed, 7 insertions(+), 2 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/59/9359/1
diff --git a/vdsm/libvirtvm.py b/vdsm/libvirtvm.py
index ca31a43..16e081f 100644
--- a/vdsm/libvirtvm.py
+++ b/vdsm/libvirtvm.py
@@ -1260,7 +1260,9 @@
_QEMU_GA_DEVICE_NAME)
domxml.appendInput()
domxml.appendGraphics()
- domxml.appendConsole()
+
+ if utils.tobool(self.conf.get('attachConsole', 'false')):
+ domxml.appendConsole()
for devType in self._devices:
for dev in self._devices[devType]:
diff --git a/vdsm_api/vdsmapi-schema.json b/vdsm_api/vdsmapi-schema.json
index 6591410..f736307 100644
--- a/vdsm_api/vdsmapi-schema.json
+++ b/vdsm_api/vdsmapi-schema.json
@@ -2379,6 +2379,9 @@
#
# @vmType: The type of VM
#
+# @attachConsole: Defines if a virtio-console should be attached to the
+# virtual machine
+#
# Since: 4.10.0
##
{'type': 'VmParameters',
@@ -2388,7 +2391,7 @@
'nice': 'int', 'smp': 'uint', 'smpCoresPerSocket': 'uint',
'smpThreadsPerCore': 'uint', 'timeOffset': 'uint',
'transparentHugePages': 'bool', 'vmId': 'UUID', 'vmName': 'str',
- 'vmType': 'VmType'}}
+ 'vmType': 'VmType', 'attachConsole': 'bool'}}
##
# @VmInfo:
--
To view, visit http://gerrit.ovirt.org/9359
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie92b0ad693fdde7eae9091d944403ac4477eb186
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Vinzenz Feenstra <vfeenstr(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: Online check ksmState and ksmPages.
by apahim@redhat.com
Amador Pahim has uploaded a new change for review.
Change subject: Online check ksmState and ksmPages.
......................................................................
Online check ksmState and ksmPages.
Currently ksmState and ksmPages is updated only when adjust()
is called (vm._startUnderlyingVm() and libvirt.releaseVm()).
Since ksmtuned can turn on/off ksm any time, vdsm will report
inaccurate information until adjust() be called.
This patch changes ksmState and ksmPages update to every API
call, reflecting always the accurate information.
Change-Id: I84c2f8b80529a47662bdeac80bb3f71defd0758a
Signed-off-by: Amador Pahim <apahim(a)redhat.com>
---
M vdsm/API.py
M vdsm/ksm.py
2 files changed, 25 insertions(+), 22 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/10/9510/1
diff --git a/vdsm/API.py b/vdsm/API.py
index 0710191..a0f2067 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -1124,8 +1124,8 @@
stats.update(self._cif.mom.getKsmStats())
else:
stats['momStatus'] = 'disabled'
- stats['ksmState'] = self._cif.ksmMonitor.state
- stats['ksmPages'] = self._cif.ksmMonitor.pages
+ stats['ksmState'] = self._ksmState()
+ stats['ksmPages'] = self._ksmPages()
stats['ksmCpu'] = self._cif.ksmMonitor.cpuUsage
stats['memShared'] = self._memShared() / Mbytes
@@ -1372,6 +1372,18 @@
"""
return (self._cif.ksmMonitor.memsharing() * PAGE_SIZE_BYTES)
+ def _ksmState(self):
+ """
+ Return ksm running state.
+ """
+ return (self._cif.ksmMonitor.running())
+
+ def _ksmPages(self):
+ """
+ Return how many pages to scan before ksm will sleep.
+ """
+ return (self._cif.ksmMonitor.npages())
+
def _memCommitted(self):
"""
Return the amount of memory (Mb) committed for VMs
diff --git a/vdsm/ksm.py b/vdsm/ksm.py
index 3037a65..3c858b6 100644
--- a/vdsm/ksm.py
+++ b/vdsm/ksm.py
@@ -55,7 +55,6 @@
def run(self):
start()
try:
- self.state, self.pages = self.readState()
KSM_MONITOR_INTERVAL = 60
jiff0 = self._getKsmdJiffies()
while True:
@@ -66,9 +65,6 @@
jiff0 = jiff1
except:
self._cif.log.error("Error monitoring KSM", exc_info=True)
-
- def readState(self):
- return running(), npages()
def adjust(self):
"""Adjust ksm's vigor
@@ -81,10 +77,9 @@
try:
utils.execCmd([constants.EXT_SERVICE, 'ksmtuned', 'retune'],
sudo=True)
- self.state, self.pages = self.readState()
finally:
self._lock.release()
- return self.state
+ return self.running()
def memsharing(self):
try:
@@ -92,21 +87,17 @@
except:
return 0
+ def running(self):
+ try:
+ return (int(file('/sys/kernel/mm/ksm/run').read()) & 1 == 1)
+ except:
+ return False
-def running():
- try:
- state = int(file('/sys/kernel/mm/ksm/run').read()) & 1 == 1
- return state
- except:
- return False
-
-
-def npages():
- try:
- npages = int(file('/sys/kernel/mm/ksm/pages_to_scan').read())
- return npages
- except:
- return 0
+ def npages(self):
+ try:
+ return (int(file('/sys/kernel/mm/ksm/pages_to_scan').read()))
+ except:
+ return 0
def start():
--
To view, visit http://gerrit.ovirt.org/9510
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I84c2f8b80529a47662bdeac80bb3f71defd0758a
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Amador Pahim <apahim(a)redhat.com>
11 years, 5 months
Change in vdsm[master]: [WIP] netwiring: [3/3] Add API definitions.
by asegurap@redhat.com
Antoni Segura Puimedon has uploaded a new change for review.
Change subject: [WIP] netwiring: [3/3] Add API definitions.
......................................................................
[WIP] netwiring: [3/3] Add API definitions.
Third and final of the Network Wiring feature patches. It adds the
implementation for using the new updateVmDevice feature.
TODO: Add vdsm startup creation of the DUMMY_BRIDGE.
TODO: Add the port mirroring processing.
Change-Id: I3b9b4f49f80466a83e3e13f1042ac2a8866c6bcd
Signed-off-by: Antoni S. Puimedon <asegurap(a)redhat.com>
---
M vdsm/API.py
M vdsm/define.py
M vdsm/libvirtvm.py
3 files changed, 103 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/62/9562/1
diff --git a/vdsm/API.py b/vdsm/API.py
index e87b7e5..966a921 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -353,6 +353,17 @@
response['status']['message'] = 'Hibernation process starting'
return response
+ def updateVmDevice(self, params):
+ if 'type' not in params:
+ self.log.error('Missing a required parameters: type')
+ return {'status': {'code': errCode['MissParam']['status']['code'],
+ 'message': 'Missing one of required '
+ 'parameters: type'}}
+ v = self._cif.vmContainer.get(self._UUID)
+ if not v:
+ return errCode['noVM']
+ return v.updateDevice(params)
+
def hotplugNic(self, params):
try:
utils.validateMinimalKeySet(params, ('vmId', 'nic'))
diff --git a/vdsm/define.py b/vdsm/define.py
index 11a6ef6..e2ba196 100644
--- a/vdsm/define.py
+++ b/vdsm/define.py
@@ -124,6 +124,9 @@
'replicaErr': {'status':
{'code': 55,
'message': 'Drive replication error'}},
+ 'updateDevice': {'status':
+ {'code': 56,
+ 'message': 'Failed to update device'}},
'recovery': {'status':
{'code': 99,
'message':
@@ -137,3 +140,5 @@
#exitCodes
ERROR = 1
NORMAL = 0
+
+DUMMY_BRIDGE = 'none-br'
diff --git a/vdsm/libvirtvm.py b/vdsm/libvirtvm.py
index 3439dc3..3fdde03 100644
--- a/vdsm/libvirtvm.py
+++ b/vdsm/libvirtvm.py
@@ -25,7 +25,7 @@
import threading
import vm
-from vdsm.define import ERROR, doneCode, errCode
+from vdsm.define import ERROR, doneCode, errCode, DUMMY_BRIDGE
from vdsm import utils
from vdsm import constants
import guestIF
@@ -1517,6 +1517,92 @@
return {'status': doneCode, 'vmList': self.status()}
+ def _updateNetDevice(self, params):
+ try:
+ utils.validateMinimalKeySet(params, ('alias', 'linkState'))
+ except ValueError:
+ self.log.error('Missing at least one of the required parameters: '
+ 'alias, linkState')
+ return {'status': {'code': errCode['MissParam']['status']['code'],
+ 'message': 'Missing at least one of required '
+ 'parameters: alias, linkState'}}
+
+ dev = None
+ for dev in self.conf['devices']:
+ if (dev['type'] == vm.NIC_DEVICES and
+ dev['alias'] == params['alias']):
+ break
+
+ if dev is None:
+ self.log.error('Network device %s cannot be updated. It does not'
+ 'exist', params['alias'])
+ return {'status':
+ {'code': errCode['updateDevice']['status']['code'],
+ 'message': 'Missing net device'}}
+
+ network = dev['network']
+
+ # Prepare the updateDevice xml
+ netelem = xml.dom.minidom.Element(params['type'])
+ netelem.setAttribute('type', 'bridge')
+ mac = xml.dom.minidom.Element('mac')
+ mac.setAttribute('address', dev['macAddr'])
+ netelem.appendChild(mac)
+ model = xml.dom.minidom.Element('model')
+ model.setAttribute('type', dev['nicModel'])
+ netelem.appendChild(model)
+
+ if 'network' not in params:
+ # If no network is specified we take the vnic to the dummy bridge
+ # and set the link 'down' always.
+ source = xml.dom.minidom.Element('source')
+ source.setAttribute('bridge', DUMMY_BRIDGE)
+ netelem.appendChild(source)
+ link = xml.dom.minidom.Element('link')
+ link.setAttribute('state', 'down')
+ netelem.appendChild(link)
+ else:
+ # There is a network defined. Thus, we either just modify the link
+ # status or move between network backends.
+ source = xml.dom.minidom.Element('source')
+ source.setAttribute('bridge', network)
+ netelem.appendChild(source)
+ link = xml.dom.minidom.Element('link')
+ if network != params['network']:
+ # If a different network is specified. First we take the link
+ # down and then update the device to connect to the new bridge.
+ link.setAttribute('state', 'down')
+ netelem.appendChild(link)
+ try:
+ self._dom.updateDeviceFlags(
+ netelem.toxml(),
+ libvirt.libvirt.VIR_DOMAIN_AFFECT_LIVE)
+ except:
+ self.log.debug("updateNetDevice failed", exc_info=True)
+ return {'status':
+ {'code': errCode['updateDevice']['status']['code'],
+ 'message': 'Failed to take the link down.'}}
+
+ link.setAttribute('state', params['linkState'])
+ source.setAttribute('bridge', params['network'])
+
+ try:
+ self._dom.updateDeviceFlags(
+ netelem.toxml(),
+ libvirt.libvirt.VIR_DOMAIN_AFFECT_LIVE)
+ except:
+ self.log.debug("updateNetDeviceFlags failed", exc_info=True)
+ return {'status':
+ {'code': errCode['updateDevice']['status']['code'],
+ 'message': 'Failed to take the link %s' % \
+ link.getAttribute('state')}}
+
+ def updateDevice(self, params):
+ if params['type'] == vm.NIC_DEVICES:
+ return self._updateNetDevice(params)
+ else:
+ return errCode['noimpl']
+
def hotunplugNic(self, params):
if self.isMigrating():
return errCode['migInProgress']
--
To view, visit http://gerrit.ovirt.org/9562
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3b9b4f49f80466a83e3e13f1042ac2a8866c6bcd
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Antoni Segura Puimedon <asegurap(a)redhat.com>
11 years, 5 months