From 3c82a53b0d37723fedbd0684c9b53041da33475b Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Tue, 31 Aug 2004 20:34:24 +0000 Subject: 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 --- src/lib/Server/Structures/base.py | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src') 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 -- cgit v1.2.3-1-g7c22