summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2004-10-29 03:52:56 +0000
committerNarayan Desai <desai@mcs.anl.gov>2004-10-29 03:52:56 +0000
commit3c369b8778ae84062cea03a7747d51357e2f91eb (patch)
treee5672a7300fa3c730b6fb8d62234b2af6534b613
parentf33809fbcf4fe4e1ce52e70d46d3f8e6834bc5e7 (diff)
downloadbcfg2-3c369b8778ae84062cea03a7747d51357e2f91eb.tar.gz
bcfg2-3c369b8778ae84062cea03a7747d51357e2f91eb.tar.bz2
bcfg2-3c369b8778ae84062cea03a7747d51357e2f91eb.zip
Rename: src/lib/Server/Structures/base.py -> src/lib/Server/Structures/Base.py
(Logical change 1.122) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@547 ce84e21b-d406-0410-9b95-82705330c041
-rw-r--r--src/lib/Server/Structures/Base.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/lib/Server/Structures/Base.py b/src/lib/Server/Structures/Base.py
index e69de29bb..9c6eaf573 100644
--- a/src/lib/Server/Structures/Base.py
+++ b/src/lib/Server/Structures/Base.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+'''This module sets up a base list of configuration entries'''
+__revision__ = '$Revision$'
+
+from copy import deepcopy
+
+from Bcfg2.Server.Generator import SingleXMLFileBacked
+from Bcfg2.Server.Structure import Structure
+
+from elementtree.ElementTree import Element, XML
+
+class BaseFile(SingleXMLFileBacked):
+ '''The Base file contains unstructured/independent configuration elements'''
+
+ def Index(self):
+ '''Store XML data in reasonable structures'''
+ self.store = {}
+ for entry in XML(self.data).getchildren():
+ self.store[entry.tag][entry.get('name')] = {'all':[], 'Class':{}}
+ for child in entry.getchildren():
+ if child.tag in ['Image', 'Class']:
+ self.store[entry.tag][child.tag][child.get('name')] = child.getchildren()
+ else:
+ self.store[entry.tag]['all'].append(child)
+
+ def Construct(self, metadata):
+ '''Build structures for client described by metadata'''
+ ret = Element("Independant", version='2.0')
+ idata = self.store['Image'].get(metadata.image, {'all':[], 'Class':{}})
+ for entry in idata['all']:
+ ret.append(deepcopy(entry))
+ for cls in metadata.classes:
+ for entry in idata['Class'].get(cls, []):
+ ret.append(deepcopy(entry))
+ cdata = self.store['Class'].get(cls, {'all':[], 'Image':{}})
+ for entry in cdata['all']:
+ ret.append(deepcopy(entry))
+ for entry in cdata['Image'].get(metadata.image, []):
+ ret.append(deepcopy(entry))
+ return [ret]
+
+class Base(Structure):
+ '''This Structure is good for the pile of independent configs needed for most actual systems'''
+ __name__ = 'Base'
+ __version__ = '$Id$'
+
+ '''base creates independent clauses based on client metadata'''
+ def __init__(self, core, datastore):
+ Structure.__init__(self, core, datastore)
+ self.base = BaseFile("%s/etc/base.xml"%(datastore), self.core.fam)
+ self.Construct = self.base.Construct