[Libvirt-cim] [PATCH 3 of 4] [TEST] Adding support for remote migration in the vsmigrations library

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Thu Mar 12 23:27:11 UTC 2009


> 
> -def get_migration_job_instance(ip, virt, id):
> +def get_migration_job_instance(src_ip, virt, id):
>      job = []
> -    key_list = ["instanceid"]
> -    curr_cim_rev, changeset = get_provider_version(virt, ip)
> +    curr_cim_rev, changeset = get_provider_version(virt, src_ip)
>      if curr_cim_rev < libvirt_mig_changes:
>          mig_job_cn   =  'Virt_MigrationJob'
>      else:
>          mig_job_cn   = get_typed_class(virt, 'MigrationJob')
> 
>      try:
> -        job = enumclass.EnumInstances(ip, mig_job_cn)
> +        job = enumclass.EnumInstances(src_ip, mig_job_cn)
> +        if len(job) < 1:

Can you print an error here indicating that no job instances were returned?


> 
> -def verify_domain_list(list, local_migrate, test_dom):
> -    status = PASS
> -    if local_migrate == 0 and test_dom not in list:
> -        status = FAIL
> -    if local_migrate == 1 and test_dom in list:
> +def verify_domain_list(remote_migrate, test_dom, src_ip, target_ip):
> +    status = FAIL
> +    list_src = domain_list(src_ip)
> +    if remote_migrate == 0:
> +        if test_dom in list_src:
> +            status = PASS
> +    elif remote_migrate == 1 :
> +        list_target = domain_list(target_ip)

The verification fails for me when migrating a KVM guest. Here's the 
error message I see:

VirtualSystemMigrationService - 06_remote_migration.py: FAIL
ERROR 	- Migration verification for 'f10_test' failed

You'll need to specify the virtualization type - otherwise, it calls 
domain_list() for Xen hyp.  Here's what I see when I print the contents 
of the list_src and list_target:

['Xen', 'Xen', 'failed']

> +        if test_dom not in list_src and test_dom in list_target:
> +            status = PASS
> +    else:
> +        logger.error("Invalid migration option")
> +
> +    if status != PASS:
> +        logger.error("Migration verification for '%s' failed", test_dom)
> +        return status 
> +
> +    return status
> +
> +def check_migration_job(src_ip, id, target_ip, test_dom, 
> +                        remote_migrate, virt='Xen', timeout=50):
> +    try:
> +        status, job_inst = get_migration_job_instance(src_ip, virt, id)
> +        if status != PASS:
> +            logger.error("Unable to get mig_job instance for '%s'", test_dom)
> +            return FAIL
> +
>          status = FAIL
> 
> -    if status != PASS:
> -        logger.error("%s migrate failed", test_dom)
> +        for i in range(0, timeout):
> +            if job_inst.JobState == CIM_JOBSTATE_COMPLETE:
> +                sleep(3)
> +                if job_inst.Status != "Completed":
> +                    logger.error("Failed to set the status for the migrated " \
> +                                 "dom: '%s'", test_dom)

Can you also print the job_inst.Status as well? Right now, libvirt 
doesn't print much when a migration fails, but it might print more info 
in the future.

-- 
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list