summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <davids@redhat.com>2012-11-26 13:19:55 +0100
committerDavid Sommerseth <davids@redhat.com>2012-11-26 13:19:55 +0100
commit4997a19e800d1044c02ee5c1dac710736677d1af (patch)
tree93ba5f7babe15008c74a00cf7110c87d071f0374
parent63b0d8931803006d8d732ff50e37b212765e09a4 (diff)
downloadrteval-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__.py1
-rw-r--r--rteval/sysinfo/dmi.py44
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)