diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2004-08-31 20:34:24 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2004-08-31 20:34:24 +0000 |
commit | 3c82a53b0d37723fedbd0684c9b53041da33475b (patch) | |
tree | 5e328682363827c05b7abb74ba8f05031612ef55 /src/lib/Server/Structures/base.py | |
parent | 87b82e1990e80f91e81b1f2b70adcf1d8db30733 (diff) | |
download | bcfg2-3c82a53b0d37723fedbd0684c9b53041da33475b.tar.gz bcfg2-3c82a53b0d37723fedbd0684c9b53041da33475b.tar.bz2 bcfg2-3c82a53b0d37723fedbd0684c9b53041da33475b.zip |
change to ID for now
2004/08/31 15:33:31-05:00 anl.gov!desai
switch to actual rcs keyword
2004/08/31 15:32:46-05:00 anl.gov!desai
(Logical change 1.52)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@297 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Structures/base.py')
-rw-r--r-- | src/lib/Server/Structures/base.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/lib/Server/Structures/base.py b/src/lib/Server/Structures/base.py index e69de29bb..880f4af61 100644 --- a/src/lib/Server/Structures/base.py +++ b/src/lib/Server/Structures/base.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# $Id: $ +from copy import deepcopy +from syslog import LOG_ERR, syslog + +from Bcfg2.Server.Generator import SingleXMLFileBacked, XMLFileBacked, DirectoryBacked +from Bcfg2.Server.Structure import Structure + +from elementtree.ElementTree import Element, XML, tostring + +class BaseFile(SingleXMLFileBacked): + def Index(self): + self.store = {} + self.store['Image'] = {} + self.store['Class'] = {} + self.store['Host'] = {} + a = XML(self.data) + self.entries = a.getchildren() + for e in self.entries: + self.store[e.tag][e.attrib['name']] = e.getchildren() + + def Construct(self, metadata): + r = Element("Independant", version='2.0') + for entry in self.store['Image'].get(metadata.image, []): + r.append(deepcopy(entry)) + for c in metadata.classes: + for entry in self.store['Class'].get(c, []): + r.append(deepcopy(entry)) + for entry in self.store['Host'].get(metadata.hostname): + r.append(deepcopy(entry)) + return [r] + +class base(Structure): + __name__ = 'base' + __version__ = '$Id$' + + '''base creates independent clauses based on client metadata''' + def __init__(self, core, datastore): + Structure.__init__(self, core, datastore) + self.base = ImageFile("%s/common/base.xml"%(datastore), self.core.fam) + self.Construct = self.base.Construct |