Signed-off-by: Tang Chen <tanc...@cn.fujitsu.com> --- client/virt/libvirt_vm.py | 46 ++++++++++++++++++++++++-------------------- 1 files changed, 25 insertions(+), 21 deletions(-)
diff --git a/client/virt/libvirt_vm.py b/client/virt/libvirt_vm.py index 009a643..d6ae7fb 100644 --- a/client/virt/libvirt_vm.py +++ b/client/virt/libvirt_vm.py @@ -425,29 +425,30 @@ def virsh_domain_exists(name, uri=""): return False -def virsh_migrate(options, name, dest_uri, extra, uri=""): +def virsh_migrate(name="", dest_uri="", option="", extra="", uri="", + ignore_status=False, print_info=False): """ Migrate a guest to another host. - @param: options: Free-form string of options to virsh migrate @param: name: name of guest on uri @param: dest_uri: libvirt uri to send guest to + @param: option: Free-form string of options to virsh migrate @param: extra: Free-form string of options to follow <domain> <desturi> + @param: ignore_status: virsh_cmd() raises an exception when error if False + @param: print_info: virsh_cmd() print status, stdout and stderr if True @return: True if migration command was successful """ - # Fail early with warning when simple to do so - if not virsh_domain_exists(name, uri) or virsh_is_dead(name, uri): - logging.warning("Domain doesn't exist or found dead, prior to migration") - return False - # Rely on test-code to verify guest state on receiving-end - migrate_cmd = "migrate %s %s %s %s" %\ - (options, name, dest_uri, extra) - try: - virsh_cmd(migrate_cmd, uri) - except error.CmdError, detail: - logging.warning("Migration error: %s" % (detail)) - return False - return True + cmd = "migrate" + if option: + cmd += " %s" % option + if name: + cmd += " --domain %s" % name + if dest_uri: + cmd += " --desturi %s" % dest_uri + if extra: + cmd += " %s" % extra + + return virsh_cmd(cmd, uri, ignore_status, print_info) def virsh_attach_device(name, xml_file, extra="", uri=""): @@ -1258,21 +1259,24 @@ class VM(virt_vm.BaseVM): lockfile.close() - def migrate(self, dest_uri, options="--live --timeout 60", extra=""): + def migrate(self, dest_uri="", option="--live --timeout 60", extra="", + ignore_status=False, print_info=False): """ Migrate a VM to a remote host. @param: dest_uri: Destination libvirt URI - @param: options: Migration options before <domain> <desturi> + @param: option: Migration options before <domain> <desturi> @param: extra: Migration options after <domain> <desturi> @return: True if command succeeded """ logging.info("Migrating VM %s from %s to %s" % (self.name, self.connect_uri, dest_uri)) - result = virsh_migrate(options, self.name, dest_uri, - extra, self.connect_uri) - # On successful migration, point to guests new hypervisor - if result == True: + result = virsh_migrate(self.name, dest_uri, option, + extra, self.connect_uri, + ignore_status, print_info) + # On successful migration, point to guests new hypervisor. + # Since dest_uri could be None, checking it is necessary. + if result.exit_status == 0 and dest_uri: self.connect_uri = dest_uri return result -- 1.7.3.1 _______________________________________________ Autotest mailing list Autotest@test.kernel.org http://test.kernel.org/cgi-bin/mailman/listinfo/autotest