]> git.proxmox.com Git - mirror_ifupdown2.git/blob - ifupdown2/ifupdown/template.py
f1792ccfbe7d0b15676d43b21d2f14df7711f706
[mirror_ifupdown2.git] / ifupdown2 / 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_lookuppath=None):
18 self.logger = logging.getLogger('ifupdown.' +
19 self.__class__.__name__)
20 self.tclass = None
21 self.tclassargs = {}
22 self.render = self._render_default
23 if template_engine == 'mako':
24 try:
25 self.tclass = utils.importName('mako.template', 'Template')
26 except Exception, e:
27 self.logger.warn('unable to load template engine %s (%s)'
28 %(template_engine, str(e)))
29 pass
30 if template_lookuppath:
31 try:
32 self.logger.debug('setting template lookuppath to %s'
33 %template_lookuppath)
34 lc = utils.importName('mako.lookup', 'TemplateLookup')
35 self.tclassargs['lookup'] = lc(
36 directories=template_lookuppath.split(':'))
37 except Exception, e:
38 self.logger.warn('unable to set template lookup path' +
39 ' %s (%s)' %(template_lookuppath, str(e)))
40 pass
41 self.render = self._render_mako
42 else:
43 self.logger.info('skip template processing.., ' +
44 'template engine not found')
45
46 def _render_default(self, textdata):
47 return textdata
48
49 def _render_mako(self, textdata):
50 """ render textdata passed as argument using mako
51
52 Returns rendered textdata """
53
54 if not self.tclass:
55 return textdata
56 self.logger.info('template processing on interfaces file ...')
57 t = self.tclass(text=textdata, output_encoding='utf-8',
58 lookup=self.tclassargs.get('lookup'))
59 return t.render()