From dcef6222739b26de0ddd1f25e1a14748edb99139 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Wed, 11 Aug 2004 19:54:35 +0000 Subject: update to new modules path (Logical change 1.33) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@173 ce84e21b-d406-0410-9b95-82705330c041 --- src/Bcfg2Server | 110 -------------------------------------------------------- 1 file changed, 110 deletions(-) delete mode 100644 src/Bcfg2Server (limited to 'src') diff --git a/src/Bcfg2Server b/src/Bcfg2Server deleted file mode 100644 index 6812d3c2a..000000000 --- a/src/Bcfg2Server +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env python -# $Id: $ - -from socket import gethostbyaddr, herror -from string import split -from syslog import syslog, LOG_INFO, LOG_ERR -from sys import exc_info -from time import time -from traceback import extract_tb -from ConfigParser import ConfigParser - -from elementtree.ElementTree import Element, tostring - -from Bcfg2.Core import Core -from Bcfg2.Metadata import MetadataStore - -from sss.restriction import DataSet, Data -from sss.server import Server - -class BcfgServer(Server): - __implementation__ = 'Bcfg2' - __component__ = 'bcfg2' - __dispatch__ = {'get-config':'BuildConfig', 'get-probes':'GetProbes', 'probe-data':'CommitProbeData'} - __validate__ = 0 - - def __setup__(self): - c = ConfigParser() - c.read(['/home/desai/dev/bcfg2/bcfg2.conf']) - repo = c.get('server','repository') - generators = split(c.get('server','generators'),',') - structures = split(c.get('server', 'structures'),',') - mpath = c.get('server','metadata') - self.core = Core(repo, structures, generators) - self.metadata = MetadataStore("%s/metadata.xml"%(mpath), self.core.fam) - self.__progress__() - - def __progress__(self): - while self.core.fam.fm.pending(): - self.core.fam.HandleEvent() - return 0 - - def GetMetadata(self, client): - if self.metadata.clients.has_key(client): - return self.metadata.clients[client] - else: - syslog(LOG_INFO, "Inserting default metadata for client %s"%(client)) - pass - - def BuildConfig(self, xml, (peer,port)): - try: - client = gethostbyaddr(peer)[0].split('.')[0] - except herror: - return Element("error", type='host resolution error') - t = time() - config = Element("Configuration", version='2.0') - # get metadata for host - m = self.GetMetadata(client) - try: - structures = self.core.GetStructures(m) - except: - self.LogFailure("GetStructures") - return Element("error", type='structure error') - for s in structures: - try: - self.core.BindStructure(s, m) - config.append(s) - except: - self.LogFailure("BindStructure") - #for x in s.getchildren(): - # print x.attrib['name'], '\000' in tostring(x) - syslog(LOG_INFO, "Generated config for %s in %s seconds"%(client, time()-t)) - return config - - def GetProbes(self, xml, (peer,port)): - r = Element('probes') - try: - client = gethostbyaddr(peer)[0].split('.')[0] - except herror: - return Element("error", type='host resolution error') - m = self.GetMetadata(client) - for g in self.core.generators: - for p in g.GetProbes(m): - r.append(p) - return r - - def CommitProbeData(self, xml, (peer,port)): - try: - client = gethostbyaddr(peer)[0].split('.')[0] - except herror: - return Element("error", type='host resolution error') - for data in xml.findall(".//probe-data"): - try: - [g] = [x for x in self.core.generators if x.__name__ == data.attrib['source']] - g.AcceptProbeData(client, data) - except: - self.LogFailure("CommitProbeData") - return Element("OK") - - def LogFailure(self, failure): - (t,v,tb)=exc_info() - syslog(LOG_ERR, "Unexpected failure in %s"%(failure)) - for line in extract_tb(tb): - syslog(LOG_ERR, ' File "%s", line %i, in %s\n %s\n'%line) - syslog(LOG_ERR, "%s: %s\n"%(t,v)) - del t,v,tb - -if __name__ == '__main__': - server = BcfgServer() - for i in range(10): - server.__progress__() -- cgit v1.2.3-1-g7c22