diff --git a/ifupdown/networkinterfaces.py b/ifupdown/networkinterfaces.py index bc7749d..9a2f9a8 100644 --- a/ifupdown/networkinterfaces.py +++ b/ifupdown/networkinterfaces.py @@ -60,8 +60,11 @@ class networkInterfaces(): self.interfacesfileiobuf = interfacesfileiobuf self.interfacesfileformat = interfacesfileformat self._filestack = [self.interfacesfile] - self._template_engine = templateEngine(template_engine, - template_lookuppath) + + self._template_engine = None + self._template_engine_name = template_engine + self._template_engine_path = template_lookuppath + self._currentfile_has_template = False self._ws_split_regex = re.compile(r'[\s\t]\s*') @@ -385,22 +388,25 @@ class networkInterfaces(): def read_filedata(self, filedata): self._currentfile_has_template = False # run through template engine - try: - rendered_filedata = self._template_engine.render(filedata) - if rendered_filedata is filedata: - self._currentfile_has_template = False - else: - self._currentfile_has_template = True - except Exception, e: - self._parse_error(self._currentfile, -1, - 'failed to render template (%s). ' %str(e) + - 'Continue without template rendering ...') - rendered_filedata = None - pass - if rendered_filedata: - self.process_interfaces(rendered_filedata) - else: - self.process_interfaces(filedata) + if filedata and '%' in filedata: + try: + self._template_engine = templateEngine( + self._template_engine_name, + self._template_engine_path) + rendered_filedata = self._template_engine.render(filedata) + if rendered_filedata is filedata: + self._currentfile_has_template = False + else: + self._currentfile_has_template = True + except Exception, e: + self._parse_error(self._currentfile, -1, + 'failed to render template (%s). Continue without template rendering ...' + % str(e)) + rendered_filedata = None + if rendered_filedata: + self.process_interfaces(rendered_filedata) + return + self.process_interfaces(filedata) def read_file(self, filename, fileiobuf=None): if fileiobuf: