[Kimchi-devel] [PATCH v2] Supress error messages while checking vm metadata

Ramon Medeiros ramonn at linux.vnet.ibm.com
Tue May 5 13:02:12 UTC 2015


Changes:

v2: 
Improve coding to avoid code duplication


The function FeatureTests.disable_libvirt_error_logging only removes the
error message that will be displayed on the console. Libvirt also logs
errors on messages log. To avoid flood messages log with metadata
errors, it will be verified manually if the xml has the tag.

Signed-off-by: Ramon Medeiros <ramonn at linux.vnet.ibm.com>
---
 src/kimchi/model/utils.py | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/src/kimchi/model/utils.py b/src/kimchi/model/utils.py
index 0c9d519..50b0578 100644
--- a/src/kimchi/model/utils.py
+++ b/src/kimchi/model/utils.py
@@ -84,7 +84,6 @@ def _kimchi_set_metadata_node(dom, node):
 
 
 def libvirt_get_kimchi_metadata_node(dom, mode="current"):
-    FeatureTests.disable_libvirt_error_logging()
     try:
         xml = dom.metadata(libvirt.VIR_DOMAIN_METADATA_ELEMENT,
                            KIMCHI_META_URL,
@@ -115,36 +114,39 @@ def set_metadata_node(dom, node, metadata_support, mode="all"):
         _kimchi_set_metadata_node(dom, node)
 
 
-def _kimchi_get_metadata_node(dom, tag):
+def _kimchi_get_metadata_node(xml, tag):
     # some other tools will not let libvirt create a persistent
     # configuration, just return empty
+    # remove the "kimchi" prefix of xml
+    for elem in xml.getiterator():
+        if not hasattr(elem.tag, 'find'):
+            continue
+        i = elem.tag.find('}')
+        if i >= 0:
+            elem.tag = elem.tag[i+1:]
+
+    objectify.deannotate(xml)
+    etree.cleanup_namespaces(xml)
+    return xml
+
+
+def get_metadata_node(dom, tag, metadata_support, mode="current"):
     if not dom.isPersistent():
-        return None
+        return ""
     xml = dom.XMLDesc(libvirt.VIR_DOMAIN_XML_INACTIVE)
     root = etree.fromstring(xml)
     kimchi = root.find("metadata/{%s}kimchi" % KIMCHI_META_URL)
-    # remove the "kimchi" prefix of xml
-    if kimchi is not None:
-        for elem in kimchi.getiterator():
-            if not hasattr(elem.tag, 'find'):
-                continue
-            i = elem.tag.find('}')
-            if i >= 0:
-                elem.tag = elem.tag[i+1:]
-
-        objectify.deannotate(kimchi)
-        etree.cleanup_namespaces(kimchi)
-        return kimchi
-    return None
 
+    # remove the "kimchi" prefix of xml
+    if kimchi is None:
+        return ""
 
-def get_metadata_node(dom, tag, metadata_support, mode="current"):
     if metadata_support:
         kimchi = libvirt_get_kimchi_metadata_node(dom, mode)
     else:
         # FIXME remove this code when all distro libvirt supports metadata
         # element
-        kimchi = _kimchi_get_metadata_node(dom, tag)
+        kimchi = _kimchi_get_metadata_node(kimchi, tag)
 
     if kimchi is not None:
         node = kimchi.find(tag)
-- 
2.1.0




More information about the Kimchi-devel mailing list