diff --git a/src/rougail/template.py b/src/rougail/template.py
index 0fcf0f95..68044f01 100644
--- a/src/rougail/template.py
+++ b/src/rougail/template.py
@@ -11,8 +11,8 @@ import logging
from typing import Dict
from subprocess import call
-from os import listdir, unlink, mkdir
-from os.path import basename, join, split, isfile, isdir
+from os import listdir, unlink, makedirs
+from os.path import dirname, basename, join, split, isfile, isdir
from tempfile import mktemp
@@ -114,14 +114,16 @@ class CheetahTemplate(ChtTemplate):
context,
eosfunc: Dict,
config: Config,
- current_container: str):
+ current_container: str,
+ destfilename):
"""Initialize Creole CheetahTemplate
"""
ChtTemplate.__init__(self, file=filename,
searchList=[context, eosfunc, {'is_defined' : IsDefined(context),
'creole_client' : CreoleClient(config),
'current_container':CreoleGet(current_container),
- }])
+ 'rougail_filename': destfilename
+ }])
class CreoleLeader:
@@ -326,11 +328,13 @@ class CreoleTemplateEngine:
# full path of the destination file
log.info(_(f"Cheetah processing: '{destfilename}'"))
try:
- cheetah_template = CheetahTemplate(join(self.tmp_dir, filevar['source']),
+ cheetah_template = CheetahTemplate(join(self.tmp_dir,
+ filevar['source']),
self.creole_variables_dict,
self.eosfunc,
self.config.config.copy(),
- container)
+ container,
+ destfilename)
data = str(cheetah_template)
except CheetahNotFound as err:
varname = err.args[0][13:-1]
@@ -386,15 +390,18 @@ class CreoleTemplateEngine:
log.info(_("Instantiating file '{filename}'"))
container_dir = join(self.dest_dir,
container)
- if not isdir(container_dir):
- mkdir(container_dir)
- destfilename = join(container_dir,
- filevar['source'])
- self.process(destfilename,
- filevar,
- container)
- self.change_properties(destfilename,
- filevar)
+ filenames = filevar['name']
+ if not isinstance(filenames, list):
+ filenames = [filenames]
+ for filename in filenames:
+ destfilename = join(container_dir,
+ filename[1:])
+ makedirs(dirname(destfilename), exist_ok=True)
+ self.process(destfilename,
+ filevar,
+ container)
+ self.change_properties(destfilename,
+ filevar)
def instance_files(self,
container=None):
diff --git a/tests/flattener_dicos/60action_external/extra_dirs/extra/00-base.xml b/tests/flattener_dicos/60action_external/extra_dirs/extra/00-base.xml
index 52695658..4b5f66e4 100644
--- a/tests/flattener_dicos/60action_external/extra_dirs/extra/00-base.xml
+++ b/tests/flattener_dicos/60action_external/extra_dirs/extra/00-base.xml
@@ -8,7 +8,7 @@
description="Reconfigurer le serveur"
image="backup.svg"
url="extra.test.calc_url"
- url_type="SymLinkOption">
+ url_type="variable">
Reconfigurer
ead_admin
ead
diff --git a/tests/flattener_dicos/70container_files_symlink_multi/00-base.xml b/tests/flattener_dicos/70container_files_symlink_multi/00-base.xml
index 0b49c3b0..0f688c83 100644
--- a/tests/flattener_dicos/70container_files_symlink_multi/00-base.xml
+++ b/tests/flattener_dicos/70container_files_symlink_multi/00-base.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/tests/flattener_dicos/70container_fstabsymlink/00-base.xml b/tests/flattener_dicos/70container_fstabsymlink/00-base.xml
index 2be4768e..cd4fc081 100644
--- a/tests/flattener_dicos/70container_fstabsymlink/00-base.xml
+++ b/tests/flattener_dicos/70container_fstabsymlink/00-base.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/tests/flattener_dicos/70container_pathaccess/00-base.xml b/tests/flattener_dicos/70container_pathaccess/00-base.xml
index 646a3f70..02759a91 100644
--- a/tests/flattener_dicos/70container_pathaccess/00-base.xml
+++ b/tests/flattener_dicos/70container_pathaccess/00-base.xml
@@ -5,7 +5,7 @@
- nut_monitor_host
+ nut_monitor_host
diff --git a/tests/flattener_dicos/70container_pathaccess_masterslaves/00-base.xml b/tests/flattener_dicos/70container_pathaccess_masterslaves/00-base.xml
index 0fd436cd..f02fc153 100644
--- a/tests/flattener_dicos/70container_pathaccess_masterslaves/00-base.xml
+++ b/tests/flattener_dicos/70container_pathaccess_masterslaves/00-base.xml
@@ -5,7 +5,7 @@
- nut_monitor_host
+ nut_monitor_host
diff --git a/tests/flattener_dicos/80container_files_symlink_without_source/00-base.xml b/tests/flattener_dicos/80container_files_symlink_without_source/00-base.xml
index 62986e0a..eb17e95c 100644
--- a/tests/flattener_dicos/80container_files_symlink_without_source/00-base.xml
+++ b/tests/flattener_dicos/80container_files_symlink_without_source/00-base.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/tests/templates/00base/result/mailname b/tests/templates/00base/result/mailname
deleted file mode 100644
index bd51bf63..00000000
--- a/tests/templates/00base/result/mailname
+++ /dev/null
@@ -1 +0,0 @@
-oui
diff --git a/tests/templates/11disabled_if_in_filelist/result/file b/tests/templates/11disabled_if_in_filelist/result/file
deleted file mode 100644
index d907505b..00000000
--- a/tests/templates/11disabled_if_in_filelist/result/file
+++ /dev/null
@@ -1 +0,0 @@
-non
diff --git a/tests/test_template.py b/tests/test_template.py
index 576e6be8..52f9451e 100644
--- a/tests/test_template.py
+++ b/tests/test_template.py
@@ -18,6 +18,16 @@ def test_dir(request):
return request.param
+def find_files(dirname, root, files):
+ for filename in listdir(dirname):
+ abs_dirname = join(dirname, filename)
+ root_file = root + [filename]
+ if isdir(join(dirname, filename)):
+ find_files(abs_dirname, root_file, files)
+ else:
+ files.add(join(*root_file))
+
+
def test_dictionary(test_dir):
test_dir = join(template_dirs, test_dir)
tmp_dir = join(test_dir, 'tmp')
@@ -45,13 +55,15 @@ def test_dictionary(test_dir):
dest_dir)
if isdir(join(dest_dir, 'test')):
- list_templates = set(listdir(join(dest_dir, 'test')))
+ list_templates = set()
+ find_files(join(dest_dir), [], list_templates)
else:
list_templates = set()
- list_results = set(listdir(join(test_dir, 'result')))
+ list_results = set()
+ find_files(join(test_dir, 'result'), [], list_results)
assert list_templates == list_results
- for result in listdir(join(test_dir, 'result')):
- template_file = join(dest_dir, 'test', result)
+ for result in list_results:
+ template_file = join(dest_dir, result)
if not isfile(template_file):
raise Exception(f'{template_file} is not generated')
with open(join(test_dir, 'result', result), 'r') as fh: