From a62b7f6b84e4f76fb4f24876fe940b97a12361c3 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Thu, 2 Dec 2004 18:48:45 +0000 Subject: add prettyprinting to metadata output (Logical change 1.155) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@690 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Metadata.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/lib/Server/Metadata.py') diff --git a/src/lib/Server/Metadata.py b/src/lib/Server/Metadata.py index ec1d04e4b..ca42c8a1c 100644 --- a/src/lib/Server/Metadata.py +++ b/src/lib/Server/Metadata.py @@ -1,7 +1,7 @@ '''This file stores persistent metadata for the BCFG Configuration Repository''' __revision__ = '$Revision$' -from elementtree.ElementTree import XML, tostring, SubElement, Element +from elementtree.ElementTree import XML, SubElement, Element from Bcfg2.Server.Generator import SingleXMLFileBacked @@ -88,9 +88,24 @@ class MetadataStore(SingleXMLFileBacked): bundles = reduce(lambda x, y:x + y, [self.classes.get(cls) for cls in prof.classes]) return Metadata(False, image, prof.classes, bundles, prof.attributes, client) + def pretty_print(self, element, level=0): + '''Produce a pretty-printed text representation of element''' + if element.text: + fmt = "%s<%%s %%s>%%s" % (level*" ") + data = (element.tag, (" ".join(["%s='%s'" % x for x in element.attrib.iteritems()])), + element.text, element.tag) + if element._children: + fmt = "%s<%%s %%s>\n" % (level*" ",) + (len(element._children) * "%s") + "%s\n" % (level*" ") + data = (element.tag, ) + (" ".join(["%s='%s'" % x for x in element.attrib.iteritems()]),) + data += tuple([self.pretty_print(x, level+2) for x in element._children]) + (element.tag, ) + else: + fmt = "%s<%%s %%s/>\n" % (level * " ") + data = (element.tag, " ".join(["%s='%s'" % x for x in element.attrib.iteritems()])) + return fmt % data + def WriteBack(self): '''Write metadata changes back to persistent store''' fout = open(self.name, 'w') - fout.write(tostring(self.element)) + fout.write(self.pretty_print(self.element)) fout.close() -- cgit v1.2.3-1-g7c22