On 10/13/2011 07:30 PM, Wayne Sun wrote:
* this function will fail when domain is created on local, no
persistent config xml generated, so can't be copied and used
on dst for define domain
---
repos/domain/migrate.py | 31 +++++--------------------------
1 files changed, 5 insertions(+), 26 deletions(-)
diff --git a/repos/domain/migrate.py b/repos/domain/migrate.py
index 6b86188..5414c32 100644
--- a/repos/domain/migrate.py
+++ b/repos/domain/migrate.py
@@ -64,7 +64,6 @@ from exception import LibvirtAPI
SSH_KEYGEN = "ssh-keygen -t rsa"
SSH_COPY_ID = "ssh-copy-id"
-GUEST_XML = "/etc/libvirt/qemu/%s.xml"
def exec_command(logger, command, flag):
"""execute shell command
@@ -167,28 +166,6 @@ def ssh_tunnel(hostname, username, password, logger):
return 0
-def remote_guest_define(target_machine, username, guestname, logger):
- """copy guest xml description to target machine and define
it"""
- xml_file = GUEST_XML % guestname
-
- if not os.path.exists(xml_file):
- logger.error("guest %s xml file doesn't exsits" % guestname)
- return 1
-
- SCP_CMD = "scp %s %s@%s:/tmp" %(xml_file, username, target_machine)
- status, ret = exec_command(logger, SCP_CMD, 0)
- if status:
- logger.error("copy guest file failed")
- return 1
-
- VIRSH_DEFINE = "ssh %s \"virsh define /tmp/%s.xml\"" %
(target_machine, guestname)
- status, ret = exec_command(logger, VIRSH_DEFINE, 0)
- if status:
- logger.error("faied to define guest on target machine")
- return 1
-
- return 0
-
def migrate(params):
""" migrate a guest back and forth between two
machines"""
logger = params['logger']
@@ -258,12 +235,14 @@ def migrate(params):
dstdom = DomainAPI(dst)
if predstconfig == "true":
- ret = remote_guest_define(target_machine, username, guestname, logger)
- if ret:
+ guest_names = dstdom.get_defined_list()
+ if guestname in guest_names:
+ logger.info("Dst VM exists")
+ else:
+ logger.error("Dst VM missing config, should define VM on Dst
first")
env_clean(src, dst, srcdom, dstdom, target_machine, guestname, logger)
return 1
-
try:
if(migflags& VIR_MIGRATE_PEER2PEER):
logger.info("use migrate_to_uri() API to migrate")
ACK and pushed.
Guannan Ren