From 34b24211eb8baddec7daf6fa7ecb151fd9aa82e3 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Mon, 9 Jun 2008 15:56:41 +0000 Subject: Change to typed plugin system git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4680 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Plugins/Vhost.py | 116 ---------------------------------------- 1 file changed, 116 deletions(-) delete mode 100644 src/lib/Server/Plugins/Vhost.py (limited to 'src/lib/Server/Plugins/Vhost.py') diff --git a/src/lib/Server/Plugins/Vhost.py b/src/lib/Server/Plugins/Vhost.py deleted file mode 100644 index 5c38cd19e..000000000 --- a/src/lib/Server/Plugins/Vhost.py +++ /dev/null @@ -1,116 +0,0 @@ -''' -#------------------------------------------- -# Script Name: vhost.py -# Script Version: 1.0 -# Date: 20 July 2005 -# Author: Scott R Behrens -# Description: opens a request file, genereates a vhost httpd.conf file, and establishes symlinks -# Revision History: -# 1.0/<20-7-2005>: orignal version -# 1.1/<20-7-2005>: now genreates multiple files based on XML document -# 1.2/<20-8-2005>: generates one file encoded in base64 -# 1.3/<06-9-2005>: cleanup some pylint and style problems -#------------------------------------------- -''' -__revision__ = '$Revision$' - -import base64 -from copy import deepcopy -from lxml.etree import XML, Element, SubElement -from socket import gethostbyname -from Bcfg2.Server.Plugin import Plugin, PluginExecutionError, SingleXMLFileBacked - -class VhostFile(SingleXMLFileBacked): - '''The Vhost file contains webserver vhost configuration elements''' - sitesen = "/etc/apache2/sites-enabled/" - sitesav = "/etc/apache2/sites-available/" - - def __init__(self, name, fam): - self.meta = Element('dummy') - self.dispatch = {'ConfigFile':{'/etc/default/apache2':self.generateApacheDefault}, - 'Service':{'apache2':self.generateApacheSvc}} - SingleXMLFileBacked.__init__(self, name, fam) - self.http = open('/disks/bcfg2/Vhost/default.httpd', 'r').readlines() - self.servers = [] - self.vhosts = {} - - - def Index(self): - '''Build vhost data structures''' - self.meta = XML(self.data) - self.servers = [serv.get('name') for serv in self.meta.findall('server')] - self.vhosts = {} - for server in self.meta.findall("server"): - for vhost in server.findall("vhost"): - name = vhost.get('name') - self.dispatch[self.sitesav + name] = self.generateSiteFile - self.vhosts[name] = vhost - - def BuildStructures(self, metadata): - '''Build apache+vhost bundle''' - if metadata.hostname not in self.servers: - return [] - output = Element("Bundle", name='apache-vhost', version='2.0') - for server in self.meta.findall("server"): - if server.attrib['name'] in metadata.hostname: - for vhost in server.findall("vhost"): - name = vhost.get('name') - SubElement(output, "SymLink", name=self.sitesen+name, to=self.sitesav+name) - SubElement(output, "ConfigFile", name="/etc/apache2/sites-available/" + name) - SubElement(output, "ConfigFile", name='/etc/default/apache2') - for software in self.meta.findall("Software"): - for child in software.getchildren(): - output.append(deepcopy(child)) - return [output] - - def generateApacheDefault(self, entry, metadata): - '''Build /etc/default/apache2''' - if metadata.hostname in self.servers: - entry.text = 'NO_START=0\n' - else: - entry.text = 'NO_START=1\n' - perms = {'owner':'root', 'group':'root', 'perms':'0644'} - [entry.attrib.__setitem__(key, value) for (key, value) in perms.iteritems()] - - def generateApacheSvc(self, entry, metadata): - '''Enable apache service on webservices, disable on others''' - if metadata.hostname in self.servers: - entry.set('status', 'on') - else: - entry.set('status', 'off') - - def generateSiteFile(self, entry, metadata): - '''Build site-specific config file for vhost''' - if metadata.hostname not in self.servers: - raise PluginExecutionError - vhostname = entry.get('name')[len(self.sitesav):] - if not self.vhosts.has_key(vhostname): - raise PluginExecutionError - - if self.vhosts[vhostname].get('root') == "Hostname": - choice = vhostname - else: - choice = gethostbyname(vhostname) - - config = "" - for line in self.http: - line = line.replace("XXemailXX", self.vhosts[vhostname].get('email')) - line = line.replace("XXdomainXX", vhostname) - line = line.replace("XXchoiceXX", choice) - config += line - entry.text = base64.encodestring(config) - perms = {'owner':'root', 'group':'root', 'perms':'0644', 'encoding':'base64'} - [entry.attrib.__setitem__(key, value) for (key, value) in perms.iteritems()] - -class Vhost(Plugin): - '''This Structure is good for the pile of independent configs needed for most actual systems''' - __name__ = 'Vhost' - __version__ = '$Id$' - __author__ = 'behrens@mcs.anl.gov' - - '''Vhost creates independent clauses based on client metadata''' - def __init__(self, core, datastore): - Plugin.__init__(self, core, datastore) - self.Vhost = VhostFile("%s/Vhost/Vhost.xml"%(datastore), self.core.fam) - self.BuildStructures = self.Vhost.BuildStructures - self.Entries = self.Vhost.dispatch -- cgit v1.2.3-1-g7c22