]>
Commit | Line | Data |
---|---|---|
14dc390d | 1 | #!/usr/bin/python |
2 | ||
3 | import logging | |
4 | import traceback | |
5 | from utils import * | |
6 | ||
7 | class templateEngine(): | |
2c0ad8b3 | 8 | """ has template rendering methods """ |
14dc390d | 9 | |
10 | def __init__(self, template_engine, template_lookuppath=None): | |
11 | self.logger = logging.getLogger('ifupdown.' + | |
12 | self.__class__.__name__) | |
13 | self.tclass = None | |
14 | self.tclassargs = {} | |
15 | self.render = self._render_default | |
16 | if template_engine == 'mako': | |
17 | try: | |
18 | self.tclass = utils.importName('mako.template', 'Template') | |
19 | except Exception, e: | |
20 | self.logger.warn('unable to load template engine %s (%s)' | |
21 | %(template_engine, str(e))) | |
22 | pass | |
23 | if template_lookuppath: | |
24 | try: | |
25 | self.logger.debug('setting template lookuppath to %s' | |
26 | %template_lookuppath) | |
27 | lc = utils.importName('mako.lookup', 'TemplateLookup') | |
28 | self.tclassargs['lookup'] = lc( | |
29 | directories=template_lookuppath.split(':')) | |
30 | except Exception, e: | |
31 | self.logger.warn('unable to set template lookup path' + | |
32 | ' %s (%s)' %(template_lookuppath, str(e))) | |
33 | pass | |
34 | self.render = self._render_mako | |
35 | else: | |
36 | self.logger.info('skip template processing.., ' + | |
37 | 'template engine not found') | |
38 | ||
39 | def _render_default(self, textdata): | |
40 | return textdata | |
41 | ||
42 | def _render_mako(self, textdata): | |
43 | """ render textdata passed as argument using mako | |
44 | ||
45 | Returns rendered textdata """ | |
46 | ||
47 | if not self.tclass: | |
48 | return textdata | |
49 | self.logger.info('template processing on interfaces file ...') | |
50 | t = self.tclass(text=textdata, output_encoding='utf-8', | |
51 | lookup=self.tclassargs.get('lookup')) | |
52 | return t.render() |