summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Metadata.py
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2004-12-02 18:48:45 +0000
committerNarayan Desai <desai@mcs.anl.gov>2004-12-02 18:48:45 +0000
commita62b7f6b84e4f76fb4f24876fe940b97a12361c3 (patch)
tree8951e702b3fd83b4e85a22f7dab576d82d583621 /src/lib/Server/Metadata.py
parent13878f84b50a0848e957aed69f8b240202232684 (diff)
downloadbcfg2-a62b7f6b84e4f76fb4f24876fe940b97a12361c3.tar.gz
bcfg2-a62b7f6b84e4f76fb4f24876fe940b97a12361c3.tar.bz2
bcfg2-a62b7f6b84e4f76fb4f24876fe940b97a12361c3.zip
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
Diffstat (limited to 'src/lib/Server/Metadata.py')
-rw-r--r--src/lib/Server/Metadata.py19
1 files changed, 17 insertions, 2 deletions
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</%%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</%%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()