diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2004-12-02 18:48:45 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2004-12-02 18:48:45 +0000 |
commit | a62b7f6b84e4f76fb4f24876fe940b97a12361c3 (patch) | |
tree | 8951e702b3fd83b4e85a22f7dab576d82d583621 /src/lib/Server/Metadata.py | |
parent | 13878f84b50a0848e957aed69f8b240202232684 (diff) | |
download | bcfg2-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.py | 19 |
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() |