[Libvirt-cim] [PATCH 4 of 4] [TEST][RFC] Added new tc to verify remote live migration

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Sun Mar 15 13:47:04 UTC 2009



Kaitlin Rupert wrote:
>>> Shouldn't you be able to the target ip from main.options the same 
>>> way we get the source IP?
>>>
>> I knew that the test cases were using the const.py options but was 
>> not able to track how they inherited the command line args given.
>> Hmmm... I traced it now and its a bit tricky. I will make the changes 
>> in the subsequent patch I submit.
>>
>> I have one query, MigrateVirtualSystemToHost() just takes the 
>> DestinationHost ip / hostname, but what if the user wanted to connect 
>> using a specific port.
>> Will passing the port information as part of the DestinationHost work ?
>
> No, this won't work.
>
>> If it does not then passing the Port through command line becomes 
>> meaningless.
>
> There's no need to specify a CIMOM port because 
> MigrateVirtualSystemToHost() uses libvirt to migrate the guest - it 
> doesn't use the CIMOM for this communication.
>
> It is possible to specify other libvirt transport types - this can be 
> done using the MigrationSettingData instance.  It's some what involved 
> to use some of these transport types (more information at: 
> http://libvirt.org/remote.html).
>
> I would recommend using the default transport type for these tests. 
> Testing additional transport methods is something that can be added 
> later (once all the basic migration scenarios are covered).
>
>>>> + if options.virt == 'KVM' and t_sysname == s_sysname:
>> I was wondering how to make the check for verifying if the user 
>> wanted to do local migration, which means I need to validate the src 
>> ip and dest ip to be different.
>> The user might give the src and destination information in any form 
>> like localhost, ip address, hostname, FQDN.
>> The live.full_hostname() does not come handy.
>> Also, the following function gave me a similar results which could be 
>> used for comparison. [ Only some o/p given]
>>
>>  >>> print "Hostname is ", socket.gethostbyaddr('localhost')
>> Hostname is ('elm3b41', ['localhost.localdomain', 'localhost', 
>> 'localhost'], ['127.0.0.1'])
>>  >>> print "Hostname is ", 
>> socket.gethostbyaddr('elm3b41.beaverton.ibm.com')
>> Hostname is ('elm3b41.beaverton.ibm.com', [], ['9.47.67.41'])
>>  >>> print "Hostname is ", socket.gethostbyaddr('9.47.67.41')
>> Hostname is ('elm3b41.beaverton.ibm.com', [], ['9.47.67.41'])
>>
>>
>>  >>> print "fqdn is %s", socket.getfqdn('elm3b41')
>> fqdn is %s localhost.localdomain
>>  >>> print "fqdn is %s", socket.getfqdn('')
>> fqdn is %s localhost.localdomain
>>  >>> print "fqdn is %s", socket.getfqdn('9.47.67.41')
>> fqdn is %s elm3b41.beaverton.ibm.com
>>  >>> print "fqdn is %s", socket.getfqdn('elm3b41.beaverton.ibm.com')
>> fqdn is %s elm3b41.beaverton.ibm.com
>>  >>> print "fqdn is %s", socket.getfqdn('localhost.localdomain')
>> fqdn is %s localhost.localdomain
>>
>>  >>> print "FQDN is ", socket.gethostbyaddr(socket.gethostname())[0]
>> FQDN is elm3b41
>>  >>>socket.getfqdn('127.0.0.1')
>> 'localhost.localdomain'
>>
>>
>> Can you suggest something here ?
>
> This is pretty tricky.  The problem is that the /etc/hosts file can be 
> formatted in numerous ways, and there isn't really a standard across 
> distros / systems. So the gethostbyaddr(), getfqdn(), etc can return 
> different values.
>
> Like you've pointed out, it's tough to get a full list of possible 
> aliases for the system.
>
> I would say, for now, if the source and the target differ, assume it's 
> a remote migration.
>
>>>> + logger.info("Libvirt does not support local migratoin for KVM")
>>>> + return SKIP
>>>> +
>>>> + status = FAIL
>>>> + test_dom = 'VM_frm_' + socket.gethostname()
>>>> +
>>>> + try:
>>>> + status, cxml = setup_guest(test_dom, s_sysname, virt)
>>>> + if status != PASS:
>>>> + logger.error("Error setting up the guest")
>>>> + return status
>>>> +
>>>> + # Migrate the test_dom to t_sysname.
>>>> + # local_remote_migrate executes live migration by default
>>>> + # Enable remote migration by setting remote_migrate=1
>>>> + vsms_cn = get_vs_mig_setting_class(virt) + vsmservice = 
>>>> vsms_cn(s_sysname, virt)
>>>> + status = local_remote_migrate(vsmservice, s_sysname, t_sysname, 
>>>> virt,
>>>> + remote_migrate=1, guest_name=test_dom)
>>>
>>> Why not have local_remote_migrate() get its own 
>>> VirtualSystemMigrationService object? There's no need to pass it in 
>>> here because it's not used later on..
>>>
>>> Or are you planning to have future tests use it for something?
>>>
>> Oh! yeah we do not use it for anything else in the current test case 
>> changes.
>> I had created the VirtualSystemMigrationService object thinking that 
>> I shall execute one by one migration types.
>> I will shift this to vsmigrations.py.
>> But I guess writing separate scenarios for each of them makes it more 
>> cleaner or else it will become lengthier , wat say ??
>
> I'm not sure what you mean here.. for each of the migration types, you 
> can still call local_remote_migrate().  The only difference here is 
> that the function will set up the VirtualSystemMigrationService object 
> each time.
Oops! I mixed two different things. Yes I had included the 
VirtualSystemMigrationService object creation to be able to use it for 
different migration types.
Also, I was en quiring with you that if it is a good idea to include 
scenarios for all the migration types in one tc.
Sorry for not being clear.
> But I don't think that's a problem - it doesn't take too much 
> execution time.
>

-- 
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list