def install(self): if not os.path.isdir(self.outputdir): os.mkdir(self.outputdir) vars = {} for always in 'user', 'group', 'logfacility', 'loglevel', 'alive', 'timeout', 'address', 'port', 'xHTTP', 'control': vars[always] = self.options[always] if 'session' in self.options: # session seems to be restricted in Cheetah vars['affinity'] = dict(zip(['type', 'id', 'ttl'], self.options['session'].split(":", 2))) if 'emergency' in self.options: vars['emergency'] = dict(zip(['address', 'port'], self.options['emergency'].split(":", 1))) if 'err500' in self.options: packager = PackageInstaller(self) vars['err500'] = packager.package_path(self.options['err500']) if 'err503' in self.options: packager = PackageInstaller(self) vars['err503'] = packager.package_path(self.options['err503']) vars['backends'] = [] for l in self.options['backends'].split("\n"): l = l.strip() if l: vars['backends'].append(dict(zip(['address', 'port'], l.split(":", 1)))) if not os.path.exists(self.outputdir): os.mkdir(self.outputdir) template = open(self.template).read() c = Template(template, searchList = vars) open(self.cfgfile, 'w').write(str(c)) self.runscript() self.options.created(self.outputdir) target = os.path.join(self.buildout["buildout"]["bin-directory"],self.name + "ctl") poundctl = open(target, "w") print >> poundctl, "#!/bin/sh" print >> poundctl, "%s -c %s $*" % (self.options['poundctl'], self.options['control']) poundctl.close() os.chmod(target, 0755) self.options.created(target) return self.options.created()