diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2004-10-29 15:13:44 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2004-10-29 15:13:44 +0000 |
commit | 1ee8629d5f52afc29fb482fbcae626560594f800 (patch) | |
tree | 2043e8715c70acd5cadc6b1b37b11adb495fa154 /src/lib/Server/Structures | |
parent | 4504da7bb5ef77ffbf1cea9eb2de9a8db6a717b8 (diff) | |
download | bcfg2-1ee8629d5f52afc29fb482fbcae626560594f800.tar.gz bcfg2-1ee8629d5f52afc29fb482fbcae626560594f800.tar.bz2 bcfg2-1ee8629d5f52afc29fb482fbcae626560594f800.zip |
name change
(Logical change 1.123)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@556 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Structures')
-rw-r--r-- | src/lib/Server/Structures/bundler.py | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/src/lib/Server/Structures/bundler.py b/src/lib/Server/Structures/bundler.py deleted file mode 100644 index 2c9d88fe9..000000000 --- a/src/lib/Server/Structures/bundler.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python - -'''This provides bundle clauses with translation functionality''' -__revision__ = '$Revision$' - -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 - -class ImageFile(SingleXMLFileBacked): - '''This file contains image -> system mappings''' - def Index(self): - '''Build data structures out of the data''' - a = XML(self.data) - self.attr = a.attrib - self.entries = a.getchildren() - self.images = {} - for child in self.entries: - [name, pkg, service] = [child.get(x) for x in ['name', 'package', 'service']] - for grandchild in child.getchildren(): - self.images[grandchild.get('name')] = (name, pkg, service) - -class Bundle(XMLFileBacked): - def Index(self): - x = XML(self.data) - # scan self.entries to build partial bundle fragments - self.all = [] - self.systems = {} - self.attributes = {} - for entry in x.getchildren(): - if entry.tag == 'System': - self.systems[entry.attrib['name']] = entry.getchildren() - elif entry.tag == 'Attribute': - self.attributes["%s.%s" % (entry.get('scope'), entry.get('name'))] = entry.getchildren() - else: - self.all.append(entry) - del self.data - - def BuildBundle(self, metadata, system): - bundlename = self.name.split('/')[-1] - b = Element('Bundle', name=bundlename) - for entry in self.all + self.systems.get(system, []): - b.append(deepcopy(entry)) - for attribute in metadata.attributes: - for entry in self.attributes.get(attribute, []): - b.append(deepcopy(entry)) - return b - -class BundleSet(DirectoryBacked): - '''The Bundler handles creation of dependent clauses based on bundle definitions''' - __child__ = Bundle - -class bundler(Structure): - __name__ = 'bundler' - __version__ = '$Id$' - - '''The bundler creates dependent clauses based on the bundle/translation scheme from bcfg1''' - def __init__(self, core, datastore): - Structure.__init__(self, core, datastore) - self.imageinfo = ImageFile("%s/etc/imageinfo.xml"%(datastore), self.core.fam) - self.bundles = BundleSet(self.data, self.core.fam) - - def Construct(self, metadata): - (system, package, service) = self.GetTransInfo(metadata) - bundleset = [] - for bundlename in metadata.bundles: - if not self.bundles.entries.has_key("%s.xml"%(bundlename)): - syslog(LOG_ERR, "Client %s requested nonexistent bundle %s"%(metadata.hostname, bundlename)) - continue - - bundle = self.bundles.entries["%s.xml" % (bundlename)].BuildBundle(metadata, system) - # now we need to populate service/package types - for entry in bundle.getchildren(): - if entry.tag == 'Package': - entry.attrib['type'] = package - elif entry.tag == 'Service': - entry.attrib['type'] = service - bundleset.append(bundle) - return bundleset - - def GetTransInfo(self, metadata): - if self.imageinfo.images.has_key(metadata.image): - return self.imageinfo.images[metadata.image] - else: - raise KeyError, metadata.image - - - |