]> git.proxmox.com Git - mirror_ifupdown2.git/blob - ifupdown/template.py
Addons/tunnel: fix typo in validvals (#31)
[mirror_ifupdown2.git] / ifupdown / template.py
1 #!/usr/bin/python
2 #
3 # Copyright 2014 Cumulus Networks, Inc. All rights reserved.
4 # Author: Roopa Prabhu, roopa@cumulusnetworks.com
5 #
6 # template --
7 # helper class to render templates
8 #
9
10 import logging
11 import traceback
12 from utils import *
13
14 class templateEngine():
15 """ provides template rendering methods """
16
17 def __init__(self, template_engine, template_enable='0',
18 template_lookuppath=None):
19 self.logger = logging.getLogger('ifupdown.' +
20 self.__class__.__name__)
21 self.tclass = None
22 self.tclassargs = {}
23 self.render = self._render_default
24 if template_enable == '0':
25 return
26 if template_engine == 'mako':
27 try:
28 self.tclass = utils.importName('mako.template', 'Template')
29 except Exception, e:
30 self.logger.warn('unable to load template engine %s (%s)'
31 %(template_engine, str(e)))
32 pass
33 if template_lookuppath:
34 try:
35 self.logger.debug('setting template lookuppath to %s'
36 %template_lookuppath)
37 lc = utils.importName('mako.lookup', 'TemplateLookup')
38 self.tclassargs['lookup'] = lc(
39 directories=template_lookuppath.split(':'))
40 except Exception, e:
41 self.logger.warn('unable to set template lookup path'
42 ' %s (%s): are you sure \'python-mako\''
43 'is installed?'
44 % (template_lookuppath, str(e)))
45 self.render = self._render_mako
46 else:
47 self.logger.info('skip template processing.., ' +
48 'template engine not found')
49
50 def _render_default(self, textdata):
51 return textdata
52
53 def _render_mako(self, textdata):
54 """ render textdata passed as argument using mako
55
56 Returns rendered textdata """
57
58 if not self.tclass:
59 return textdata
60 self.logger.info('template processing on interfaces file ...')
61 t = self.tclass(text=textdata, output_encoding='utf-8',
62 lookup=self.tclassargs.get('lookup'))
63 return t.render()