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