[Kimchi-devel] [PATCH V8 6/7] add method to test libvirt api are available
Aline Manera
alinefm at linux.vnet.ibm.com
Thu Apr 24 19:17:27 UTC 2014
On 04/24/2014 04:16 PM, Aline Manera wrote:
> On 04/24/2014 02:19 PM, shaohef at linux.vnet.ibm.com wrote:
>> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>>
>> same mechanism with other feature tests.
>>
>> Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>> Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
>> ---
>> src/kimchi/config.py.in | 14 +++++++++++++-
>> src/kimchi/featuretests.py | 42
>> +++++++++++++++++++++++++++++++++++++++++-
>> 2 files changed, 54 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/kimchi/config.py.in b/src/kimchi/config.py.in
>
> The better place to insert it is in src/kimchi/model/config.py as all
> the feature tests are made there.
> So we can have single place for it.
In CapabilitiesModel()
>
>> index f8a645a..bca15ef 100644
>> --- a/src/kimchi/config.py.in
>> +++ b/src/kimchi/config.py.in
>> @@ -26,7 +26,7 @@ import threading
>>
>> from ConfigParser import SafeConfigParser
>>
>> -
>> +from kimchi.featuretests import FeatureTests
>> from kimchi.xmlutils import xpath_get_text
>>
>> __version__ = "@kimchiversion@"
>> @@ -125,6 +125,18 @@ class Paths(object):
>> paths = Paths()
>>
>>
>> +class LivirtSupportAPI(object):
>> + def __init__(self):
>> + self.apis = {
>> + "meta_element":
>> FeatureTests.libvirt_config_support_metadata()}
>> +
>> + def get_apis(self):
>> + return self.apis
>> +
>> +
>> +libvirt_support_apis = LivirtSupportAPI().get_apis()
>> +
>> +
>> class PluginPaths(Paths):
>>
>> def __init__(self, name):
>> diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py
>> index b1001ea..956f328 100644
>> --- a/src/kimchi/featuretests.py
>> +++ b/src/kimchi/featuretests.py
>> @@ -23,14 +23,15 @@ import lxml.etree as ET
>> import socket
>> import subprocess
>> import threading
>> +import uuid
>>
>>
>> from lxml.builder import E
>>
>>
>> +from kimchi.rollbackcontext import RollbackContext
>> from kimchi.utils import kimchi_log
>>
>> -
>> ISO_STREAM_XML = """
>> <domain type='kvm'>
>> <name>ISO_STREAMING</name>
>> @@ -53,6 +54,17 @@ ISO_STREAM_XML = """
>> </devices>
>> </domain>"""
>>
>> +SIMPLE_VM_XML = """
>> +<domain type='kvm'>
>> + <name>%s</name>
>
>> + <uuid>%s</uuid>
>
> the uuid is not required to create a vm
>
>> + <memory unit='KiB'>10240</memory>
>> + <os>
>> + <type arch='x86_64' machine='pc'>hvm</type>
>> + <boot dev='hd'/>
>> + </os>
>> +</domain>"""
>> +
>> SCSI_FC_XML = """
>> <pool type='scsi'>
>> <name>TEST_SCSI_FC_POOL</name>
>> @@ -175,3 +187,31 @@ class FeatureTests(object):
>> pool is None or pool.undefine()
>> conn is None or conn.close()
>> return True
>> +
>> + @staticmethod
>> + def libvirt_config_support_metadata():
>> + vm_uuid = uuid.uuid1()
>> + vm_name = "kimchi_test_%s" % vm_uuid
>> + KIMCHI_META_URL =
>> "https://github.com/kimchi-project/kimchi/metadata/"
>> + xml = SIMPLE_VM_XML % (vm_name, vm_uuid)
>> + meta_support = False
>> + with RollbackContext() as rollback:
>> + FeatureTests.disable_screen_error_logging()
>> + rollback.prependDefer(FeatureTests.enable_screen_error_logging)
>> + conn = libvirt.open('qemu:///system')
>> + rollback.prependDefer(conn.close)
>> + dom = conn.defineXML(xml)
>> + rollback.prependDefer(dom.undefine)
>> + try:
>> + dom.setMetadata(libvirt.VIR_DOMAIN_METADATA_ELEMENT,
>> + "<metatest/>", "kimchi",
>> + KIMCHI_META_URL + "metatest",
>> + flags=libvirt.VIR_DOMAIN_AFFECT_CURRENT)
>> + meta_support = True
>> + except libvirt.libvirtError as e:
>> + if e.get_error_code() ==
>> libvirt.VIR_ERR_ARGUMENT_UNSUPPORTED:
>> + meta_support = False
>> + else:
>> + raise
>
> You should not raise an exception during feature test.
> Independent of which error occurred you should only return
> meta_support = False and handle that info when using it
>
> except libvirt.libvirtError as e:
> return False
>
>> +
>> + return meta_support
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
More information about the Kimchi-devel
mailing list