diff --git a/data/creole.dtd b/data/creole.dtd
index 1f4033843..82bbfdb3d 100644
--- a/data/creole.dtd
+++ b/data/creole.dtd
@@ -87,55 +87,55 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -149,6 +149,8 @@
+
+
@@ -229,4 +231,3 @@
-
diff --git a/src/rougail/template.py b/src/rougail/template.py
index de44625c9..de2eb916c 100644
--- a/src/rougail/template.py
+++ b/src/rougail/template.py
@@ -8,7 +8,7 @@ import imp
import sys
from shutil import copy
import logging
-from typing import Dict
+from typing import Dict, Any
from subprocess import call
from os import listdir, unlink, makedirs
@@ -116,16 +116,21 @@ class CheetahTemplate(ChtTemplate):
eosfunc: Dict,
config: Config,
current_container: str,
- destfilename):
+ destfilename,
+ variable):
"""Initialize Creole CheetahTemplate
"""
- ChtTemplate.__init__(self, file=filename,
- searchList=[context, eosfunc, {'is_defined' : IsDefined(context),
- # 'creole_client' : CreoleClient(config),
- # 'current_container':CreoleGet(current_container),
- 'normalize_family': normalize_family,
- 'rougail_filename': destfilename
- }])
+ extra_context = {'is_defined' : IsDefined(context),
+ # 'creole_client' : CreoleClient(config),
+ # 'current_container':CreoleGet(current_container),
+ 'normalize_family': normalize_family,
+ 'rougail_filename': destfilename
+ }
+ if variable:
+ extra_context['rougail_variable'] = variable
+ ChtTemplate.__init__(self,
+ file=filename,
+ searchList=[context, eosfunc, extra_context])
class CreoleLeader:
@@ -324,7 +329,8 @@ class CreoleTemplateEngine:
def process(self,
destfilename: str,
filevar: Dict,
- container: str):
+ container: str,
+ variable: Any):
"""Process a cheetah template
"""
# full path of the destination file
@@ -336,7 +342,8 @@ class CreoleTemplateEngine:
self.eosfunc,
self.config.config.copy(),
container,
- destfilename)
+ destfilename,
+ variable)
data = str(cheetah_template)
except CheetahNotFound as err:
varname = err.args[0][13:-1]
@@ -393,15 +400,26 @@ class CreoleTemplateEngine:
container_dir = join(self.dest_dir,
container)
filenames = filevar['name']
+ if 'variable' in filevar:
+ variable = filevar['variable']
+ else:
+ variable = None
if not isinstance(filenames, list):
filenames = [filenames]
- for filename in filenames:
+ if variable:
+ variable = [variable]
+ for idx, filename in enumerate(filenames):
destfilename = join(container_dir,
filename[1:])
makedirs(dirname(destfilename), exist_ok=True)
+ if variable:
+ var = variable[idx]
+ else:
+ var = None
self.process(destfilename,
filevar,
- container)
+ container,
+ var)
self.change_properties(destfilename,
filevar)
diff --git a/tests/flattener_dicos/70container_files_symlink_multi_variable/00-base.xml b/tests/flattener_dicos/70container_files_symlink_multi_variable/00-base.xml
new file mode 100644
index 000000000..e926a7443
--- /dev/null
+++ b/tests/flattener_dicos/70container_files_symlink_multi_variable/00-base.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+ oui
+
+
+ /etc/mailname
+ /etc/mailname2
+
+
+ mailname
+ mailname2
+
+
+
+
+
diff --git a/tests/flattener_dicos/70container_files_symlink_multi_variable/makedict/base.json b/tests/flattener_dicos/70container_files_symlink_multi_variable/makedict/base.json
new file mode 100644
index 000000000..84ba486c9
--- /dev/null
+++ b/tests/flattener_dicos/70container_files_symlink_multi_variable/makedict/base.json
@@ -0,0 +1 @@
+{"creole.general.file_name": ["/etc/mailname", "/etc/mailname2"], "creole.general.var": ["mailname", "mailname2"], "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": ["/etc/mailname", "/etc/mailname2"], "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "mailname", "containers.container0.files.file0.variable": ["mailname", "mailname2"], "containers.container0.files.file0.activate": true}
\ No newline at end of file
diff --git a/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml b/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml
new file mode 100644
index 000000000..4bf5ad09b
--- /dev/null
+++ b/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+ False
+
+
+
+ False
+
+
+ mailname
+
+
+
+ True
+
+
+
+ basic
+
+
+
+
+ normal
+
+ oui
+ non
+ force_default_on_freeze
+ frozen
+ hidden
+ mandatory
+ normal
+ oui
+
+
+ mandatory
+ normal
+ /etc/mailname
+ /etc/mailname2
+
+
+ mandatory
+ normal
+ mailname
+ mailname2
+
+
+
+
+
diff --git a/tests/templates/70container_files_symlink_multi_variable/00-base.xml b/tests/templates/70container_files_symlink_multi_variable/00-base.xml
new file mode 100644
index 000000000..4bf5ad09b
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi_variable/00-base.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+ False
+
+
+
+ False
+
+
+ mailname
+
+
+
+ True
+
+
+
+ basic
+
+
+
+
+ normal
+
+ oui
+ non
+ force_default_on_freeze
+ frozen
+ hidden
+ mandatory
+ normal
+ oui
+
+
+ mandatory
+ normal
+ /etc/mailname
+ /etc/mailname2
+
+
+ mandatory
+ normal
+ mailname
+ mailname2
+
+
+
+
+
diff --git a/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname b/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname
new file mode 100644
index 000000000..0288f489b
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname
@@ -0,0 +1 @@
+mailname
diff --git a/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname2 b/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname2
new file mode 100644
index 000000000..80d43ca54
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname2
@@ -0,0 +1 @@
+mailname2
diff --git a/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname b/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname
new file mode 100644
index 000000000..0288f489b
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname
@@ -0,0 +1 @@
+mailname
diff --git a/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname2 b/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname2
new file mode 100644
index 000000000..80d43ca54
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname2
@@ -0,0 +1 @@
+mailname2
diff --git a/tests/templates/70container_files_symlink_multi_variable/tmp/mailname b/tests/templates/70container_files_symlink_multi_variable/tmp/mailname
new file mode 100644
index 000000000..5ecb01bbb
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi_variable/tmp/mailname
@@ -0,0 +1 @@
+%%rougail_variable
diff --git a/tests/templates/70container_files_symlink_multi_variable/tmpl/mailname b/tests/templates/70container_files_symlink_multi_variable/tmpl/mailname
new file mode 100644
index 000000000..5ecb01bbb
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi_variable/tmpl/mailname
@@ -0,0 +1 @@
+%%rougail_variable