summaryrefslogtreecommitdiffstats
path: root/src/BcfgServer.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/BcfgServer.py')
-rw-r--r--src/BcfgServer.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/BcfgServer.py b/src/BcfgServer.py
index e69de29bb..746c9eb8a 100644
--- a/src/BcfgServer.py
+++ b/src/BcfgServer.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+# $Id: $
+
+from Bcfg2.Core import Core
+from Bcfg2.Metadata import Metadata
+
+from sss.restriction import DataSet, Data
+from sss.server import Server
+
+class MetadataStore(object):
+ def __init__(self):
+ self.images = {'topaz':'debian-3.1'}
+ self.tags = {'laptop':['topaz']}
+ self.bundles = {'global':['ssh'], 'tags':{'laptop':[]}, 'hosts':{}}
+
+ def GetMetadata(self, client):
+ tags = [k for (k,v) in self.tags.iteritems() if client in v]
+ bundles = self.bundles['global'] + self.bundles['hosts'].get(client,[])
+ bundles += reduce(lambda x,y:x+y, map(lambda b:self.bundles.get(b,[]), tags))
+ return Metadata(False, self.images[client], bundles, tags, client)
+
+class BcfgServer(Server):
+ __implementation__ = 'Bcfg2'
+ __component__ = 'bcfg2'
+ __dispatch__ = {'get-config':'GetConfig'}
+ __statefields__ = ['metadata']
+
+ def __setup__(self):
+ self.metadata = MetadataStore()
+ self.core=Core('/home/desai/data/b2',['bundler'],['sshbase','fstab','myri','cfg'])
+ self.__progress__()
+
+ def __progress__(self):
+ while self.core.fam.fm.pending():
+ self.core.fam.HandleEvent()
+
+if __name__ == '__main__':
+ server = BcfgServer()
+