Example #1
0
    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
Example #2
0
    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
Example #3
0
 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)
Example #4
0
 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)