diff options
author | David Sommerseth <davids@redhat.com> | 2012-11-26 13:19:55 +0100 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2012-11-26 13:19:55 +0100 |
commit | 4997a19e800d1044c02ee5c1dac710736677d1af (patch) | |
tree | 93ba5f7babe15008c74a00cf7110c87d071f0374 | |
parent | 63b0d8931803006d8d732ff50e37b212765e09a4 (diff) | |
download | rteval-4997a19e800d1044c02ee5c1dac710736677d1af.tar.gz rteval-4997a19e800d1044c02ee5c1dac710736677d1af.tar.xz rteval-4997a19e800d1044c02ee5c1dac710736677d1af.zip |
Reworked sysinfo/dmi.py to be similar to the other sysinfo sub-modules
Reworked the XML report generator to use libxml2 directly and renamed
it to MakeReport(). In addition all all private variables were
modified to be prefixed correctly.
Added this new XML generator to be called from the
SystemInfo::MakeReport() method as well
Signed-off-by: David Sommerseth <davids@redhat.com>
-rw-r--r-- | rteval/sysinfo/__init__.py | 1 | ||||
-rw-r--r-- | rteval/sysinfo/dmi.py | 44 |
2 files changed, 23 insertions, 22 deletions
diff --git a/rteval/sysinfo/__init__.py b/rteval/sysinfo/__init__.py index 2a6885a..7d2e04a 100644 --- a/rteval/sysinfo/__init__.py +++ b/rteval/sysinfo/__init__.py @@ -62,6 +62,7 @@ class SystemInfo(KernelInfo, SystemServices, dmi.DMIinfo, CPUtopology, MemoryInf report_n.addChild(NetworkInfo.MakeReport(self)) report_n.addChild(SystemServices.MakeReport(self)) report_n.addChild(CPUtopology.MakeReport(self)) + report_n.addChild(dmi.DMIinfo.MakeReport(self)) return report_n diff --git a/rteval/sysinfo/dmi.py b/rteval/sysinfo/dmi.py index 10a95d9..d4079ad 100644 --- a/rteval/sysinfo/dmi.py +++ b/rteval/sysinfo/dmi.py @@ -63,8 +63,8 @@ class DMIinfo(object): '''class used to obtain DMI info via python-dmidecode''' def __init__(self, config, logger): - self.version = '0.3' - self.sharedir = config.installdir + self.__version = '0.4' + self.__sharedir = config.installdir if not dmidecode_loaded: logger.log(Log.DEBUG|Log.WARN, "No dmidecode module found, ignoring DMI tables") @@ -72,7 +72,7 @@ class DMIinfo(object): return self.__fake = False - self.dmixml = dmidecode.dmidecodeXML() + self.__dmixml = dmidecode.dmidecodeXML() xsltdoc = self.__load_xslt('rteval_dmi.xsl') self.xsltparser = libxslt.parseStylesheetDoc(xsltdoc) @@ -81,28 +81,29 @@ class DMIinfo(object): def __load_xslt(self, fname): if os.path.exists(fname): return libxml2.parseFile(fname) - elif os.path.exists(self.sharedir + '/' + fname): - return libxml2.parseFile(self.sharedir + '/' + fname) + elif os.path.exists(self.__sharedir + '/' + fname): + return libxml2.parseFile(self.__sharedir + '/' + fname) else: raise RuntimeError, 'Could not locate XSLT template for DMI data (%s)' % fname - def dmi_genxml(self, xml): + + def MakeReport(self): + rep_n = libxml2.newNode("DMIinfo") + rep_n.newProp("version", self.__version) if self.__fake: - fake = libxml2.newNode("HardwareInfo") - fake.addContent("No DMI tables available") - fake.newProp("not_available", "true") - xml.AppendXMLnodes(fake) - return - self.dmixml.SetResultType(dmidecode.DMIXML_DOC) - resdoc = self.xsltparser.applyStylesheet(self.dmixml.QuerySection('all'), None) - node = resdoc.getRootElement().copyNode(1) - node.newProp("DMIinfo_version", self.version) - xml.AppendXMLnodes(node) + rep_n.addContent("No DMI tables available") + rep_n.newProp("not_available", "1") + else: + self.__dmixml.SetResultType(dmidecode.DMIXML_DOC) + resdoc = self.xsltparser.applyStylesheet(self.__dmixml.QuerySection('all'), None) + dmi_n = resdoc.getRootElement().copyNode(1) + rep_n.addChild(dmi_n) + return rep_n + def unit_test(rootdir): from pprint import pprint - import xmlout class unittest_ConfigDummy(object): def __init__(self, rootdir): @@ -123,11 +124,10 @@ def unit_test(rootdir): log.SetLogVerbosity(Log.DEBUG|Log.INFO) cfg = unittest_ConfigDummy(rootdir) d = DMIinfo(cfg, log) - x = xmlout.XMLOut('dmi_test', "0.0") - x.NewReport() - d.dmi_genxml(x) - x.close() - x.Write('-') + dx = d.MakeReport() + x = libxml2.newDoc("1.0") + x.setRootElement(dx) + x.saveFormatFileEnc("-", "UTF-8", 1) return 0 except Exception, e: print "** EXCEPTION: %s" % str(e) |