def bind_entry(self, entry, metadata): """Build literal file information.""" self.template.metadata = metadata self.searchlist['metadata'] = metadata self.template.path = entry.get('realname', entry.get('name')) self.searchlist['path'] = entry.get('realname', entry.get('name')) self.template.source_path = self.name self.searchlist['source_path'] = self.name if entry.tag == 'Path': entry.set('type', 'file') try: if type(self.template) == unicode: entry.text = self.template else: if entry.get('encoding') == 'base64': # take care of case where file needs base64 encoding entry.text = b64encode(self.template) else: entry.text = unicode(str(self.template), self.encoding) except: (a, b, c) = sys.exc_info() msg = traceback.format_exception(a, b, c, limit=2)[-1][:-1] logger.error(msg) logger.error("TCheetah template error for %s" % self.searchlist['path']) del a, b, c raise Bcfg2.Server.Plugin.PluginExecutionError
def bind_entry(self, entry, metadata): """Build literal file information.""" fname = entry.get('realname', entry.get('name')) if entry.tag == 'Path': entry.set('type', 'file') try: stream = self.template.generate( \ name=fname, metadata=metadata, path=self.name).filter(removecomment) if have_ntt: ttypes = [TextTemplate, NewTextTemplate] else: ttypes = [TextTemplate] if True in [isinstance(self.template, t) for t in ttypes]: try: textdata = stream.render('text', strip_whitespace=False) except TypeError: textdata = stream.render('text') if type(textdata) == unicode: entry.text = textdata else: if entry.get('encoding') == 'base64': # take care of case where file needs base64 encoding entry.text = b64encode(textdata) else: entry.text = unicode(textdata, self.encoding) else: try: xmldata = stream.render('xml', strip_whitespace=False) except TypeError: xmldata = stream.render('xml') if type(xmldata) == unicode: entry.text = xmldata else: entry.text = unicode(xmldata, self.encoding) if entry.text == '': entry.set('empty', 'true') except TemplateError: err = sys.exc_info()[1] logger.exception('Genshi template error') raise Bcfg2.Server.Plugin.PluginExecutionError('Genshi template error: %s' % err) except AttributeError: err = sys.exc_info()[1] logger.exception('Genshi template loading error') raise Bcfg2.Server.Plugin.PluginExecutionError('Genshi template loading error: %s' % err)