summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Metadata.py
diff options
context:
space:
mode:
authorBrian Pellin <bpellin@mcs.anl.gov>2005-01-06 20:50:12 +0000
committerBrian Pellin <bpellin@mcs.anl.gov>2005-01-06 20:50:12 +0000
commitadd1e4e38fce73e282a2301b37db72201765d564 (patch)
tree09491511ba929272e7a514fbb69e7317451309ef /src/lib/Server/Metadata.py
parent0f271bc872f21384171e840d9fe5f38958b3d8cc (diff)
downloadbcfg2-add1e4e38fce73e282a2301b37db72201765d564.tar.gz
bcfg2-add1e4e38fce73e282a2301b37db72201765d564.tar.bz2
bcfg2-add1e4e38fce73e282a2301b37db72201765d564.zip
Added support for image to toolset mapping.
(Logical change 1.174) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@757 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Metadata.py')
-rw-r--r--src/lib/Server/Metadata.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/Server/Metadata.py b/src/lib/Server/Metadata.py
index 6838a7525..2c00db22e 100644
--- a/src/lib/Server/Metadata.py
+++ b/src/lib/Server/Metadata.py
@@ -7,13 +7,14 @@ from Bcfg2.Server.Generator import SingleXMLFileBacked
class Metadata(object):
'''The Metadata class is a container for all classes of metadata used by Bcfg2'''
- def __init__(self, all, image, classes, bundles, attributes, hostname):
+ def __init__(self, all, image, classes, bundles, attributes, hostname, toolset):
self.all = all
self.image = image
self.classes = classes
self.bundles = bundles
self.attributes = attributes
self.hostname = hostname
+ self.toolset = toolset
def Applies(self, other):
'''Check if metadata styled object applies to current metadata'''
@@ -44,6 +45,7 @@ class MetadataStore(SingleXMLFileBacked):
self.clients = {}
self.profiles = {}
self.classes = {}
+ self.images = {}
self.element = Element("dummy")
def Index(self):
@@ -53,12 +55,15 @@ class MetadataStore(SingleXMLFileBacked):
self.clients = {}
self.profiles = {}
self.classes = {}
+ self.images = {}
for prof in self.element.findall("Profile"):
self.profiles[prof.attrib['name']] = Profile(prof)
for cli in self.element.findall("Client"):
self.clients[cli.attrib['name']] = (cli.attrib['image'], cli.attrib['profile'])
for cls in self.element.findall("Class"):
self.classes[cls.attrib['name']] = [bundle.attrib['name'] for bundle in cls.findall("Bundle")]
+ for img in self.element.findall("Image"):
+ self.images[img.attrib['name']] = img.attrib['toolset']
for key in [key[8:] for key in self.element.attrib if key[:8] == 'default_']:
self.defaults[key] = self.element.get("default_%s" % key)
@@ -87,7 +92,8 @@ class MetadataStore(SingleXMLFileBacked):
prof = self.profiles[profile]
# should we uniq here? V
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)
+ toolset = self.images[image]
+ return Metadata(False, image, prof.classes, bundles, prof.attributes, client, toolset)
def pretty_print(self, element, level=0):
'''Produce a pretty-printed text representation of element'''