Martin Betak has uploaded a new change for review. Change subject: migration: Enable lazy setting of incoming/outgoing limits ......................................................................
migration: Enable lazy setting of incoming/outgoing limits Change-Id: I79ab97f15788e4024c94d051e4aade713d760acf Signed-off-by: Martin Betak <mbe...@redhat.com> --- M lib/api/vdsmapi-schema.json M vdsm/API.py M vdsm/virt/migration.py 3 files changed, 27 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/05/53305/1 diff --git a/lib/api/vdsmapi-schema.json b/lib/api/vdsmapi-schema.json index 69a6802..e188d5b 100644 --- a/lib/api/vdsmapi-schema.json +++ b/lib/api/vdsmapi-schema.json @@ -7852,6 +7852,12 @@ # @maxBandwidth: #optional maximal bandwidth used by the migration (MiB/s) # (new in version 4.18.0) # +# @outgoingLimit: #optional maximum number of outgoing migrations +# (new in version 4.18.0) +# +# @incomingLimit: #optional maximum number of incoming migrations +# (new in version 4.18.0) +# # Since: 4.10.0 ## {'type': 'MigrateParams', @@ -7860,7 +7866,8 @@ '*tunneled': 'bool', '*abortOnError': 'bool', 'consoleAddress': 'str', 'dstqemu': 'str', '*compressed': 'bool', '*autoConverge': 'bool', - '*maxBandwidth': 'int'}} + '*maxBandwidth': 'int', '*outgoingLimit': 'int', + '*incomingLimit': 'int'}} ## # @VM.migrate: diff --git a/vdsm/API.py b/vdsm/API.py index d4a4b5e..c85b647 100644 --- a/vdsm/API.py +++ b/vdsm/API.py @@ -540,6 +540,8 @@ *compressed* - compress repeated pages during live migration *autoConverge* - force convergence during live migration *maxBandwidth* - max bandwidth used by this specific migration + *outgoingLimit* - max number of outgoing migrations + *incomingLimit* - max number of incoming migrations """ params['vmId'] = self._UUID self.log.debug(params) @@ -592,6 +594,10 @@ """ self.log.debug('Migration create') + incomingLimit = params.get('incomingLimit') + if incomingLimit: + migration.incomingMigrations.set_bound(incomingLimit) + params['vmId'] = self._UUID result = self.create(params, migration.spawn_vm) if result['status']['code']: diff --git a/vdsm/virt/migration.py b/vdsm/virt/migration.py index 090124c..0ab8e7f 100644 --- a/vdsm/virt/migration.py +++ b/vdsm/virt/migration.py @@ -121,6 +121,8 @@ ) self._autoConverge = autoConverge self._compressed = compressed + self._incomingLimit = kwargs.get('incomingLimit') + self._outgoingLimit = kwargs.get('outgoingLimit') self.status = { 'status': { 'code': 0, @@ -212,6 +214,8 @@ del self._machineParams[k] if not self.hibernating: self._machineParams['migrationDest'] = 'libvirt' + if self._incomingLimit: + self._machineParams['incomingLimit'] = self._incomingLimit self._machineParams['_srcDomXML'] = self._vm._dom.XMLDesc(0) def _prepareGuest(self): @@ -319,7 +323,14 @@ 'dstqemu': self._dstqemu, } + def _update_outgoing_limit(self): + if self._outgoingLimit: + self.log.debug('Updating outgoing migration limit to %d', + self._outgoingLimit) + SourceThread.ongoingMigrations.set_bound(self._outgoingLimit) + def run(self): + self._update_outgoing_limit() try: startTime = time.time() self._setupVdsConnection() @@ -328,7 +339,7 @@ while not self._completed: try: - with SourceThread._ongoingMigrations: + with SourceThread.ongoingMigrations: if self._migrationCanceledEvt: self._raiseAbortError() self.log.debug("migration semaphore acquired " @@ -417,7 +428,7 @@ @staticmethod def _is_retry_error(self, result): return result['status']['code'] == \ - errCode['migrateLimit']['status']['code'] + errCode['migrateLimit']['status']['code'] def _perform_migration(self, duri, muri): if self._vm.hasSpice and self._vm.conf.get('clientIp'): -- To view, visit https://gerrit.ovirt.org/53305 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I79ab97f15788e4024c94d051e4aade713d760acf Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Martin Betak <mbe...@redhat.com> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches