[Kimchi-devel] [PATCH] Eliminate name collision for feature tests' VMs

Christy Perez christy at linux.vnet.ibm.com
Fri Feb 6 15:18:28 UTC 2015



On 02/06/2015 07:03 AM, Aline Manera wrote:
> 
> It does not fix the problem, only workaround it.
> Kimchi must not leave leftovers in the user system.

Agreed. Can we put it in place a temporary solution? I liked the idea
you proposed about the CherryPy listener to clean things up, but I have
no idea how to do something like that, and I feel like other people are
a bit overwhelmed at the moment. We can add that as a to-do.

> 
> On 05/02/2015 21:15, Christy Perez wrote:
>> If Kimchi's startup is interrupted for some reason, a VM created
>> during the feature tests may be left defined. When this happens,
>> the next time Kimchi is started it will fail with an error that
>> the domain already exists (for example, "libvirtError: operation
>> failed: domain 'A_SIMPLE_VM' already exists with uuid
>> e6fccea8-f7ed-4320-a4cb-b85217d23985").
>>
>> This patch just uses the same uuid-based name scheme as was already
>> in the user tests (kvmusertests.py). That gives a miniscule chance
>> for name collision.
>>
>> Signed-off-by: Christy Perez <christy at linux.vnet.ibm.com>
>> ---
>>   src/kimchi/model/featuretests.py | 14 ++++++++++----
>>   1 file changed, 10 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/kimchi/model/featuretests.py
>> b/src/kimchi/model/featuretests.py
>> index 5a45990..aa8d709 100644
>> --- a/src/kimchi/model/featuretests.py
>> +++ b/src/kimchi/model/featuretests.py
>> @@ -24,6 +24,7 @@
>>   import socket
>>   import subprocess
>>   import threading
>> +import uuid
>>
>>
>>   from lxml.builder import E
>> @@ -35,7 +36,7 @@
>>
>>   ISO_STREAM_XML = """
>>   <domain type='%(domain)s'>
>> -  <name>ISO_STREAMING</name>
>> +  <name>'%(name)s'</name>
>>     <memory unit='KiB'>1048576</memory>
>>     <os>
>>       <type arch='%(arch)s'>hvm</type>
>> @@ -57,7 +58,7 @@
>>
>>   SIMPLE_VM_XML = """
>>   <domain type='%(domain)s'>
>> -  <name>A_SIMPLE_VM</name>
>> +  <name>'%(name)s'</name>
>>     <memory unit='KiB'>10240</memory>
>>     <os>
>>       <type arch='%(arch)s'>hvm</type>
>> @@ -105,8 +106,10 @@ def libvirt_supports_iso_stream(conn, protocol):
>>           domain_type = 'test' if conn.getType().lower() == 'test'
>> else 'kvm'
>>           arch = 'ppc64' if platform.machine() == 'ppc64le' \
>>               else platform.machine()
>> +        vm_uuid = uuid.uuid1()
>> +        vm_name = "ISO_STREAM_%s" % vm_uuid
>>           xml = ISO_STREAM_XML % {'domain': domain_type, 'protocol':
>> protocol,
>> -                                'arch': arch}
>> +                                'arch': arch, 'name': vm_name}
>>           try:
>>               FeatureTests.disable_libvirt_error_logging()
>>               dom = conn.defineXML(xml)
>> @@ -196,8 +199,11 @@ def has_metadata_support(conn):
>>               domain_type = 'test' if conn.getType().lower() == 'test'
>> else 'kvm'
>>               arch = 'ppc64' if platform.machine() == 'ppc64le' \
>>                   else platform.machine()
>> +            vm_uuid = uuid.uuid1()
>> +            vm_name = "A_SIMPLE_VM_%s" % vm_uuid
>>               dom = conn.defineXML(SIMPLE_VM_XML % {'domain':
>> domain_type,
>> -                                                  'arch': arch})
>> +                                                  'arch': arch,
>> +                                                  'name': vm_name})
>>               rollback.prependDefer(dom.undefine)
>>               try:
>>                   dom.setMetadata(libvirt.VIR_DOMAIN_METADATA_ELEMENT,
> 




More information about the Kimchi-devel mailing list