Compare commits

..

3 Commits

Author SHA1 Message Date
58b3880e9b Delete changelog 2020-07-29 09:56:15 +02:00
413ab6dbb0 Add debian folder in packaging branch 2020-07-29 09:55:51 +02:00
534b5f4413 Do not include debian folder in code branch 2020-07-29 09:54:48 +02:00
184 changed files with 996 additions and 1774 deletions

5
debian/changelog vendored
View File

@ -1,5 +0,0 @@
rougail (0.1) unstable; urgency=low
* first version
-- Cadoles <contact@cadoles.com> Tue, 31 Mar 2020 10:40:42 +0200

View File

@ -1,6 +1,5 @@
# coding: utf-8 # coding: utf-8
from copy import copy from copy import copy
from typing import List
from collections import OrderedDict from collections import OrderedDict
from os.path import join, basename from os.path import join, basename
@ -114,7 +113,7 @@ class ServiceAnnotator:
def convert_service_to_family(self, service_name, service_family, service): def convert_service_to_family(self, service_name, service_family, service):
for elttype, values in vars(service).items(): for elttype, values in vars(service).items():
if elttype in ['name', 'index', 'method']: if elttype in ['name', 'index']:
continue continue
family = self.objectspace.family() family = self.objectspace.family()
family.name = elttype + 's' family.name = elttype + 's'
@ -185,10 +184,7 @@ class ServiceAnnotator:
family.name = '{}{}'.format(name, index) family.name = '{}{}'.format(name, index)
family.variable = variables family.variable = variables
family.mode = None family.mode = None
self.paths.add_family('services', self.paths.append('family', subpath, 'services', creoleobj=family)
subpath,
family,
)
families.append(family) families.append(family)
return families return families
@ -234,19 +230,11 @@ class ServiceAnnotator:
choices.append(choice) choices.append(choice)
variable.choice = choices variable.choice = choices
path = '{}.{}'.format(subpath, name) path = '{}.{}'.format(subpath, name)
self.paths.add_variable('services', self.paths.append('variable', path, 'services', 'service', variable)
path,
'service',
False,
variable,
)
return variable return variable
def _update_override(self, file_, index, service_path):
self._update_file(file_, index, service_path)
def _update_file(self, file_, index, service_path): def _update_file(self, file_, index, service_path):
if not hasattr(file_, 'file_type') or file_.file_type == "UnicodeOption": if file_.file_type == "UnicodeOption":
if not hasattr(file_, 'source'): if not hasattr(file_, 'source'):
file_.source = basename(file_.name) file_.source = basename(file_.name)
elif not hasattr(file_, 'source'): elif not hasattr(file_, 'source'):
@ -339,10 +327,7 @@ class ServiceAnnotator:
family.name = '{}{}'.format(name, index) family.name = '{}{}'.format(name, index)
family.variable = variables family.variable = variables
family.mode = None family.mode = None
self.paths.add_family('services', self.paths.append('family', subpath, 'services', creoleobj=family)
subpath,
family,
)
families.append(family) families.append(family)
return families return families
@ -455,108 +440,64 @@ class SpaceAnnotator(object):
variable.help = hlp.text variable.help = hlp.text
del self.space.help del self.space.help
def manage_leader(self,
leader_space: 'Leadership',
leader_family_name: str,
leader_name: str,
namespace: str,
variable: 'Variable',
group: 'Group',
leader_fullname: str,
) -> None:
# manage leader's variable
if variable.multi is not True:
raise CreoleDictConsistencyError(_('the variable {} in a group must be multi').format(variable.name))
leader_space.variable = []
leader_space.name = leader_name
leader_space.hidden = variable.hidden
variable.hidden = None
if hasattr(group, 'description'):
leader_space.doc = group.description
else:
leader_space.doc = variable.description
leader_path = namespace + '.' + leader_family_name + '.' + leader_name
self.paths.add_family(namespace,
leader_path,
leader_space,
)
leader_family = self.space.variables[namespace].family[leader_family_name]
leader_family.variable[leader_name] = leader_space
leader_space.variable.append(variable)
self.paths.set_leader(namespace,
leader_family_name,
leader_name,
leader_name,
)
leader_space.path = leader_fullname
def manage_follower(self,
namespace: str,
leader_family_name: str,
variable: 'Variable',
leader_name: str,
follower_names: List[str],
leader_space: 'Leadership',
) -> None:
if variable.name != follower_names[0]:
raise CreoleDictConsistencyError(_('cannot found this follower {}').format(follower_names[0]))
follower_names.remove(variable.name)
# followers are multi
if not variable.multi:
raise CreoleDictConsistencyError(_('the variable {} in a group must be multi or submulti').format(variable.name))
leader_space.variable.append(variable) # pylint: disable=E1101
self.paths.set_leader(namespace,
leader_family_name,
variable.name,
leader_name,
)
def convert_groups(self): # pylint: disable=C0111 def convert_groups(self): # pylint: disable=C0111
if hasattr(self.space, 'constraints') and hasattr(self.space.constraints, 'group'): if hasattr(self.space, 'constraints'):
for group in self.space.constraints.group: if hasattr(self.space.constraints, 'group'):
leader_fullname = group.leader for group in self.space.constraints.group:
follower_names = list(group.follower.keys()) leader_fullname = group.master
leader_family_name = self.paths.get_variable_family_name(leader_fullname) follower_names = list(group.slave.keys())
namespace = self.paths.get_variable_namespace(leader_fullname) leader_family_name = self.paths.get_variable_family_name(leader_fullname)
leader_name = self.paths.get_variable_name(leader_fullname) namespace = self.paths.get_variable_namespace(leader_fullname)
ori_leader_family = self.space.variables[namespace].family[leader_family_name] leader_name = self.paths.get_variable_name(leader_fullname)
has_a_leader = False leader_family = self.space.variables[namespace].family[leader_family_name]
for variable in list(ori_leader_family.variable.values()): leader_path = namespace + '.' + leader_family_name
if isinstance(variable, self.objectspace.Leadership): is_leader = False
# append follower to an existed leadership for variable in list(leader_family.variable.values()):
if variable.name == leader_name: if isinstance(variable, self.objectspace.Leadership):
leader_space = variable # append follower to an existed leadership
has_a_leader = True if variable.name == leader_name:
leader_space = variable
is_leader = True
else:
if is_leader:
if variable.name == follower_names[0]:
# followers are multi
if not variable.multi:
raise CreoleDictConsistencyError(_('the variable {} in a group must be multi or submulti').format(variable.name))
follower_names.remove(variable.name)
leader_family.variable.pop(variable.name)
leader_space.variable.append(variable) # pylint: disable=E1101
if namespace == 'creole':
variable_fullpath = variable.name
else:
variable_fullpath = leader_path + '.' + variable.name
self.paths.set_leader(variable_fullpath, leader_name)
if follower_names == []:
break
else:
raise CreoleDictConsistencyError(_('cannot found this follower {}').format(follower_names[0]))
if is_leader is False and variable.name == leader_name:
leader_space = self.objectspace.Leadership()
leader_space.variable = []
leader_space.name = leader_name
leader_space.hidden = variable.hidden
if hasattr(group, 'description'):
leader_space.doc = group.description
else:
leader_space.doc = variable.description
variable.hidden = None
self.paths.append('family', leader_path + '.' + leader_name, namespace, creoleobj=leader_space)
# manage leader's variable
if variable.multi is not True:
raise CreoleDictConsistencyError(_('the variable {} in a group must be multi').format(variable.name))
leader_family.variable[leader_name] = leader_space
leader_space.variable.append(variable) # pylint: disable=E1101
self.paths.set_leader(leader_fullname, leader_name)
leader_space.path = leader_fullname
is_leader = True
else: else:
if has_a_leader: raise CreoleDictConsistencyError(_('cannot found followers {}').format(follower_names))
# it's a follower del self.space.constraints.group
self.manage_follower(namespace,
leader_family_name,
variable,
leader_name,
follower_names,
leader_space,
)
ori_leader_family.variable.pop(variable.name)
if follower_names == []:
# no more follower
break
elif variable.name == leader_name:
# it's a leader
leader_space = self.objectspace.Leadership()
self.manage_leader(leader_space,
leader_family_name,
leader_name,
namespace,
variable,
group,
leader_fullname,
)
has_a_leader = True
else:
raise CreoleDictConsistencyError(_('cannot found followers {}').format(follower_names))
del self.space.constraints.group
def remove_empty_families(self): # pylint: disable=C0111,R0201 def remove_empty_families(self): # pylint: disable=C0111,R0201
if hasattr(self.space, 'variables'): if hasattr(self.space, 'variables'):
@ -1120,11 +1061,7 @@ class SpaceAnnotator(object):
# if param.optional is True: # if param.optional is True:
# param_option_indexes.append(fill_idx) # param_option_indexes.append(fill_idx)
try: try:
param.text, suffix = self.paths.get_variable_path(param.text, param.text = self.paths.get_variable_path(param.text, namespace)
namespace,
with_suffix=True)
if suffix:
param.suffix = suffix
except CreoleDictConsistencyError as err: except CreoleDictConsistencyError as err:
if param.optional is True: if param.optional is True:
param_option_indexes.append(fill_idx) param_option_indexes.append(fill_idx)

View File

@ -13,7 +13,7 @@
# Forked by: # Forked by:
# Cadoles (http://www.cadoles.com) # Cadoles (http://www.cadoles.com)
# Copyright (C) 2019-2020 # Copyright (C) 2019
# distribued with GPL-2 or later license # distribued with GPL-2 or later license
@ -66,9 +66,9 @@
<!ELEMENT services (service*)> <!ELEMENT services (service*)>
<!ELEMENT service ((port* | tcpwrapper* | ip* | interface* | package* | file* | digitalcertificate* | override*)*) > <!ELEMENT service ((port* | tcpwrapper* | ip* | interface* | package* | file* | digitalcertificate*)*) >
<!ATTLIST service name CDATA #REQUIRED> <!ATTLIST service name CDATA #REQUIRED>
<!ATTLIST service method (systemd|none) "systemd"> <!ATTLIST service method (systemd|upstart|apache|network) "systemd">
<!ELEMENT input (#PCDATA)> <!ELEMENT input (#PCDATA)>
<!ELEMENT profile (#PCDATA)> <!ELEMENT profile (#PCDATA)>
@ -109,7 +109,6 @@
<!ATTLIST file mkdir (True|False) "False"> <!ATTLIST file mkdir (True|False) "False">
<!ATTLIST file rm (True|False) "False"> <!ATTLIST file rm (True|False) "False">
<!ATTLIST file redefine (True|False) "False"> <!ATTLIST file redefine (True|False) "False">
<!ATTLIST file templating (True|False) "True">
<!ELEMENT digitalcertificate EMPTY> <!ELEMENT digitalcertificate EMPTY>
<!ATTLIST digitalcertificate name CDATA #REQUIRED > <!ATTLIST digitalcertificate name CDATA #REQUIRED >
@ -119,10 +118,6 @@
<!ATTLIST digitalcertificate type CDATA #REQUIRED > <!ATTLIST digitalcertificate type CDATA #REQUIRED >
<!ATTLIST digitalcertificate ca CDATA #REQUIRED > <!ATTLIST digitalcertificate ca CDATA #REQUIRED >
<!ELEMENT override EMPTY>
<!ATTLIST override name CDATA #REQUIRED >
<!ATTLIST override templating (True|False) "True">
<!ELEMENT variables (family*, separators*)> <!ELEMENT variables (family*, separators*)>
<!ELEMENT family (#PCDATA | variable)*> <!ELEMENT family (#PCDATA | variable)*>
<!ATTLIST family name CDATA #REQUIRED> <!ATTLIST family name CDATA #REQUIRED>
@ -177,8 +172,8 @@
<!ATTLIST condition source CDATA #REQUIRED> <!ATTLIST condition source CDATA #REQUIRED>
<!ATTLIST condition fallback (True|False) "False"> <!ATTLIST condition fallback (True|False) "False">
<!ELEMENT group (follower+)> <!ELEMENT group (slave+)>
<!ATTLIST group leader CDATA #REQUIRED> <!ATTLIST group master CDATA #REQUIRED>
<!ATTLIST group description CDATA #IMPLIED> <!ATTLIST group description CDATA #IMPLIED>
<!ELEMENT param (#PCDATA)> <!ELEMENT param (#PCDATA)>
@ -191,6 +186,6 @@
<!ATTLIST target type (family|variable|filelist|iplist|portlist|tcpwrapperlist|packagelist|actionlist) "variable"> <!ATTLIST target type (family|variable|filelist|iplist|portlist|tcpwrapperlist|packagelist|actionlist) "variable">
<!ATTLIST target optional (True|False) "False"> <!ATTLIST target optional (True|False) "False">
<!ELEMENT follower (#PCDATA)> <!ELEMENT slave (#PCDATA)>
<!ELEMENT help ((variable* | family*)*)> <!ELEMENT help ((variable* | family*)*)>

View File

@ -11,7 +11,7 @@ from tiramisu import (StrOption, OptionDescription, DynOptionDescription, PortOp
NetworkOption, NetmaskOption, DomainnameOption, BroadcastOption, NetworkOption, NetmaskOption, DomainnameOption, BroadcastOption,
URLOption, EmailOption, FilenameOption, UsernameOption, DateOption, URLOption, EmailOption, FilenameOption, UsernameOption, DateOption,
PasswordOption, BoolOption, MACOption, Leadership, submulti, PasswordOption, BoolOption, MACOption, Leadership, submulti,
Params, ParamSelfOption, ParamOption, ParamDynOption, ParamValue, Calculation, calc_value, Params, ParamSelfOption, ParamOption, ParamValue, Calculation, calc_value,
groups, owners) groups, owners)
from tiramisu.error import ConfigError from tiramisu.error import ConfigError
@ -385,21 +385,18 @@ class Variable(Common):
if 'default' not in self.attrib: if 'default' not in self.attrib:
self.attrib['default'] = [] self.attrib['default'] = []
value = convert_tiramisu_value(child.text, type_) value = convert_tiramisu_value(child.text, type_)
if not is_follower: if not isinstance(value, list) and not is_follower:
if not isinstance(value, list): value = [value]
dvalue = [value] self.attrib['default'].append(value)
else: if 'default_multi' not in self.attrib and not is_leader:
dvalue = value self.attrib['default_multi'] = value
self.attrib['default'].append(dvalue)
if value and 'default_multi' not in self.attrib and not is_leader:
self.attrib['default_multi'] = []
if not is_leader:
self.attrib['default_multi'].append(value)
else: else:
if 'default' in self.attrib: if 'default' in self.attrib:
raise CreoleLoaderError(_('default value already set for {}' raise CreoleLoaderError(_('default value already set for {}'
'').format(self.attrib['path'])) '').format(self.attrib['path']))
value = convert_tiramisu_value(child.text, type_) value = convert_tiramisu_value(child.text, type_)
if value is None: # and (elt.attrib['type'] != 'choice' or value not in self.attrib['values']):
value = u''
if is_follower: if is_follower:
self.attrib['default_multi'] = value self.attrib['default_multi'] = value
else: else:
@ -434,7 +431,7 @@ class Variable(Common):
transitive = False transitive = False
else: else:
raise CreoleLoaderError(_('unknown transitive boolean {}').format(transitive)) raise CreoleLoaderError(_('unknown transitive boolean {}').format(transitive))
value = [param.text, transitive, param.attrib.get('suffix')] value = [param.text, transitive]
elif param.attrib['type'] == 'number': elif param.attrib['type'] == 'number':
value = int(param.text) value = int(param.text)
else: else:
@ -465,21 +462,10 @@ class Variable(Common):
if len(value) == 3: if len(value) == 3:
for param in value[1]: for param in value[1]:
if isinstance(param[1], list): if isinstance(param[1], list):
option = self.storage.get(param[1][0]).get()
param_kwargs = {'notraisepropertyerror': param[1][1]}
if value[0] in FUNC_TO_DICT: if value[0] in FUNC_TO_DICT:
param_kwargs['todict'] = True param_value = ParamOption(self.storage.get(param[1][0]).get(), notraisepropertyerror=param[1][1], todict=True)
if not param[1][2]:
param_value = ParamOption(option,
**param_kwargs,
)
else: else:
family = '.'.join(param[1][0].split('.', 3)[:2]) param_value = ParamOption(self.storage.get(param[1][0]).get(), notraisepropertyerror=param[1][1])
param_value = ParamDynOption(option,
param[1][2],
self.storage.get(family).get(),
**param_kwargs,
)
else: else:
param_value = ParamValue(param[1]) param_value = ParamValue(param[1])
if not param[0]: if not param[0]:

View File

@ -34,8 +34,8 @@ from .annotator import ERASED_ATTRIBUTES, ActionAnnotator, ServiceAnnotator, Spa
from .utils import normalize_family from .utils import normalize_family
from .error import CreoleOperationError, SpaceObjShallNotBeUpdated, CreoleDictConsistencyError from .error import CreoleOperationError, SpaceObjShallNotBeUpdated, CreoleDictConsistencyError
# CreoleObjSpace's elements like 'family' or 'follower', that shall be forced to the Redefinable type # CreoleObjSpace's elements like 'family' or 'slave', that shall be forced to the Redefinable type
FORCE_REDEFINABLES = ('family', 'follower', 'service', 'disknod', 'variables', 'family_action') FORCE_REDEFINABLES = ('family', 'slave', 'service', 'disknod', 'variables', 'family_action')
# CreoleObjSpace's elements that shall be forced to the UnRedefinable type # CreoleObjSpace's elements that shall be forced to the UnRedefinable type
FORCE_UNREDEFINABLES = ('value', 'input', 'profile', 'ewtapp', 'tag', 'saltaction') FORCE_UNREDEFINABLES = ('value', 'input', 'profile', 'ewtapp', 'tag', 'saltaction')
# CreoleObjSpace's elements that shall be set to the UnRedefinable type # CreoleObjSpace's elements that shall be set to the UnRedefinable type
@ -194,12 +194,7 @@ class CreoleObjSpace(object):
if 'variable' not in vars(family): if 'variable' not in vars(family):
family.variable = OrderedDict() family.variable = OrderedDict()
family.variable[name] = variable_obj family.variable[name] = variable_obj
self.paths.add_variable(namespace, self.paths.append('variable', name, namespace, family.name, variable_obj)
name,
family.name,
False,
variable_obj,
)
return variable_obj return variable_obj
def remove_check(self, name): # pylint: disable=C0111 def remove_check(self, name): # pylint: disable=C0111
@ -424,23 +419,14 @@ class CreoleObjSpace(object):
if list(child) != []: if list(child) != []:
self.xml_parse_document(child, creoleobj, namespace, is_in_family) self.xml_parse_document(child, creoleobj, namespace, is_in_family)
def _fill_creoleobj_path_attribute(self, def _fill_creoleobj_path_attribute(self, space, child, namespace, document, creoleobj): # pylint: disable=R0913
space,
child,
namespace,
document,
creoleobj,
): # pylint: disable=R0913
"""Fill self.paths attributes """Fill self.paths attributes
""" """
if not isinstance(space, self.help): # pylint: disable=E1101 if not isinstance(space, self.help): # pylint: disable=E1101
if child.tag == 'variable': if child.tag == 'variable':
family_name = normalize_family(document.attrib['name']) family_name = normalize_family(document.attrib['name'])
self.paths.add_variable(namespace, self.paths.append('variable', child.attrib['name'], namespace, family_name,
child.attrib['name'], creoleobj)
family_name,
document.attrib.get('dynamic') != None,
creoleobj)
if child.attrib.get('redefine', 'False') == 'True': if child.attrib.get('redefine', 'False') == 'True':
if namespace == 'creole': if namespace == 'creole':
self.redefine_variables.append(child.attrib['name']) self.redefine_variables.append(child.attrib['name'])
@ -452,10 +438,7 @@ class CreoleObjSpace(object):
family_name = normalize_family(child.attrib['name']) family_name = normalize_family(child.attrib['name'])
if namespace != 'creole': if namespace != 'creole':
family_name = namespace + '.' + family_name family_name = namespace + '.' + family_name
self.paths.add_family(namespace, self.paths.append('family', family_name, namespace, creoleobj=creoleobj)
family_name,
creoleobj,
)
creoleobj.path = self.paths.get_family_path(family_name, namespace) creoleobj.path = self.paths.get_family_path(family_name, namespace)
def create_or_populate_from_xml(self, namespace, xmlfolders, from_zephir=None): def create_or_populate_from_xml(self, namespace, xmlfolders, from_zephir=None):
@ -592,7 +575,7 @@ class CreoleObjSpace(object):
self._sub_xml_export(name, node, node_name, subspace, space) self._sub_xml_export(name, node, node_name, subspace, space)
class Path: class Path(object):
"""Helper class to handle the `path` attribute of a CreoleObjSpace """Helper class to handle the `path` attribute of a CreoleObjSpace
instance. instance.
@ -602,27 +585,28 @@ class Path:
self.variables = {} self.variables = {}
self.families = {} self.families = {}
# Family def append(self, pathtype, name, namespace, family=None, creoleobj=None): # pylint: disable=C0111
def add_family(self, if pathtype == 'family':
namespace: str, self.families[name] = dict(name=name, namespace=namespace, creoleobj=creoleobj)
name: str, elif pathtype == 'variable':
creoleobj: str, if namespace == 'creole':
) -> str: # pylint: disable=C0111 varname = name
self.families[name] = dict(name=name, else:
namespace=namespace, if '.' in name:
creoleobj=creoleobj, varname = name
) else:
varname = '.'.join([namespace, family, name])
self.variables[varname] = dict(name=name, family=family, namespace=namespace,
leader=None, creoleobj=creoleobj)
else: # pragma: no cover
raise Exception('unknown pathtype {}'.format(pathtype))
def get_family_path(self, def get_family_path(self, name, current_namespace): # pylint: disable=C0111
name: str,
current_namespace: str,
) -> str: # pylint: disable=C0111
if current_namespace is None: # pragma: no cover if current_namespace is None: # pragma: no cover
raise CreoleOperationError('current_namespace must not be None') raise CreoleOperationError('current_namespace must not be None')
dico = self.families[normalize_family(name, dico = self.families[normalize_family(name,
check_name=False, check_name=False,
allow_dot=True, allow_dot=True)]
)]
if dico['namespace'] != 'creole' and current_namespace != dico['namespace']: if dico['namespace'] != 'creole' and current_namespace != dico['namespace']:
raise CreoleDictConsistencyError(_('A family located in the {} namespace ' raise CreoleDictConsistencyError(_('A family located in the {} namespace '
'shall not be used in the {} namespace').format( 'shall not be used in the {} namespace').format(
@ -632,147 +616,81 @@ class Path:
path = '.'.join([dico['namespace'], path]) path = '.'.join([dico['namespace'], path])
return path return path
def get_family_namespace(self, def get_family_namespace(self, name): # pylint: disable=C0111
name: str,
) -> str: # pylint: disable=C0111
dico = self.families[name] dico = self.families[name]
if dico['namespace'] is None: if dico['namespace'] is None:
return dico['name'] return dico['name']
return dico['namespace'] return dico['namespace']
def get_family_obj(self, def get_family_obj(self, name): # pylint: disable=C0111
name: str,
) -> 'Family': # pylint: disable=C0111
if name not in self.families: if name not in self.families:
raise CreoleDictConsistencyError(_('unknown family {}').format(name)) raise CreoleDictConsistencyError(_('unknown family {}').format(name))
dico = self.families[name] dico = self.families[name]
return dico['creoleobj'] return dico['creoleobj']
# Leadership def get_variable_name(self, name): # pylint: disable=C0111
def set_leader(self,
namespace: str,
leader_family_name: str,
name: str,
leader_name: str,
) -> None: # pylint: disable=C0111
if namespace != 'creole':
# need rebuild path and move object in new path
old_path = namespace + '.' + leader_family_name + '.' + name
dico = self._get_variable(old_path)
del self.variables[old_path]
new_path = namespace + '.' + leader_family_name + '.' + leader_name + '.' + name
self.add_variable(namespace,
new_path,
dico['family'],
False,
dico['creoleobj'],
)
name = new_path
dico = self._get_variable(name) dico = self._get_variable(name)
if dico['leader'] != None: return dico['name']
raise CreoleDictConsistencyError(_('Already defined leader {} for variable'
' {}'.format(dico['leader'], name)))
dico['leader'] = leader_name
def get_leader(self, name): # pylint: disable=C0111 def get_variable_obj(self, name): # pylint: disable=C0111
return self._get_variable(name)['leader'] dico = self._get_variable(name)
return dico['creoleobj']
# Variable def get_variable_family_name(self, name): # pylint: disable=C0111
def add_variable(self, dico = self._get_variable(name)
namespace: str, return dico['family']
name: str,
family: str,
is_dynamic: bool,
creoleobj,
) -> str: # pylint: disable=C0111
if namespace == 'creole' or '.' in name:
varname = name
else:
varname = '.'.join([namespace, family, name])
self.variables[varname] = dict(name=name,
family=family,
namespace=namespace,
leader=None,
is_dynamic=is_dynamic,
creoleobj=creoleobj)
def get_variable_name(self, def get_variable_family_path(self, name): # pylint: disable=C0111
name,
): # pylint: disable=C0111
return self._get_variable(name)['name']
def get_variable_obj(self,
name:str,
) -> 'Variable': # pylint: disable=C0111
return self._get_variable(name)['creoleobj']
def get_variable_family_name(self,
name: str,
) -> str: # pylint: disable=C0111
return self._get_variable(name)['family']
def get_variable_family_path(self,
name: str,
) -> str: # pylint: disable=C0111
dico = self._get_variable(name) dico = self._get_variable(name)
list_path = [dico['namespace'], dico['family']] list_path = [dico['namespace'], dico['family']]
if dico['leader'] is not None: if dico['leader'] is not None:
list_path.append(dico['leader']) list_path.append(dico['leader'])
return '.'.join(list_path) return '.'.join(list_path)
def get_variable_namespace(self, def get_variable_namespace(self, name): # pylint: disable=C0111
name: str,
) -> str: # pylint: disable=C0111
return self._get_variable(name)['namespace'] return self._get_variable(name)['namespace']
def get_variable_path(self, def get_variable_path(self, name, current_namespace, allow_source=False): # pylint: disable=C0111
name: str,
current_namespace: str,
allow_source: str=False,
with_suffix: bool=False,
) -> str: # pylint: disable=C0111
if current_namespace is None: # pragma: no cover if current_namespace is None: # pragma: no cover
raise CreoleOperationError('current_namespace must not be None') raise CreoleOperationError('current_namespace must not be None')
if with_suffix: dico = self._get_variable(name)
dico, suffix = self._get_variable(name,
with_suffix=True,
)
else:
dico = self._get_variable(name)
if not allow_source: if not allow_source:
if dico['namespace'] not in ['creole', 'services'] and current_namespace != dico['namespace']: if dico['namespace'] not in ['creole', 'services'] and current_namespace != dico['namespace']:
raise CreoleDictConsistencyError(_('A variable located in the {} namespace ' raise CreoleDictConsistencyError(_('A variable located in the {} namespace '
'shall not be used in the {} namespace').format( 'shall not be used in the {} namespace').format(
dico['namespace'], current_namespace)) dico['namespace'], current_namespace))
if '.' in dico['name']: if '.' in dico['name']:
value = dico['name'] return dico['name']
else: list_path = [dico['namespace'], dico['family']]
list_path = [dico['namespace'], dico['family']] if dico['leader'] is not None:
if dico['leader'] is not None: list_path.append(dico['leader'])
list_path.append(dico['leader']) list_path.append(dico['name'])
list_path.append(dico['name']) return '.'.join(list_path)
value = '.'.join(list_path)
if with_suffix:
return value, suffix
return value
def path_is_defined(self, def path_is_defined(self, name): # pylint: disable=C0111
name: str,
) -> str: # pylint: disable=C0111
return name in self.variables return name in self.variables
def _get_variable(self, def set_leader(self, name, leader): # pylint: disable=C0111
name: str, dico = self._get_variable(name)
with_suffix: bool=False, namespace = dico['namespace']
) -> str: if dico['leader'] != None:
raise CreoleDictConsistencyError(_('Already defined leader {} for variable'
' {}'.format(dico['leader'], name)))
dico['leader'] = leader
if namespace != 'creole':
new_path = self.get_variable_path(name, namespace)
self.append('variable', new_path, namespace, family=dico['family'], creoleobj=dico['creoleobj'])
self.variables[new_path]['leader'] = leader
del self.variables[name]
def _get_variable(self, name):
if name not in self.variables: if name not in self.variables:
if name.startswith('creole.'): if name.startswith('creole.'):
name = name.split('.')[-1] name = name.split('.')[-1]
if name not in self.variables: if name not in self.variables:
for var_name, variable in self.variables.items():
if variable['is_dynamic'] and name.startswith(var_name):
return variable, name[len(var_name):]
raise CreoleDictConsistencyError(_('unknown option {}').format(name)) raise CreoleDictConsistencyError(_('unknown option {}').format(name))
if with_suffix:
return self.variables[name], None
return self.variables[name] return self.variables[name]
def get_leader(self, name): # pylint: disable=C0111
dico = self._get_variable(name)
return dico['leader']

View File

@ -59,11 +59,11 @@ class IsDefined:
if '.' in varname: if '.' in varname:
splitted_var = varname.split('.') splitted_var = varname.split('.')
if len(splitted_var) != 2: if len(splitted_var) != 2:
msg = _("Group variables must be of type leader.follower") msg = _("Group variables must be of type master.slave")
raise KeyError(msg) raise KeyError(msg)
leader, follower = splitted_var master, slave = splitted_var
if leader in self.context: if master in self.context:
return follower in self.context[leader].follower.keys() return slave in self.context[master].slave.keys()
return False return False
else: else:
return varname in self.context return varname in self.context
@ -133,7 +133,7 @@ class CheetahTemplate(ChtTemplate):
class CreoleLeader: class CreoleLeader:
def __init__(self, value, follower=None, index=None): def __init__(self, value, slave=None, index=None):
""" """
On rend la variable itérable pour pouvoir faire: On rend la variable itérable pour pouvoir faire:
for ip in iplist: for ip in iplist:
@ -143,20 +143,20 @@ class CreoleLeader:
index is used for CreoleLint index is used for CreoleLint
""" """
self._value = value self._value = value
if follower is not None: if slave is not None:
self.follower = follower self.slave = slave
else: else:
self.follower = {} self.slave = {}
self._index = index self._index = index
def __getattr__(self, name): def __getattr__(self, name):
"""Get follower variable or attribute of leader value. """Get slave variable or attribute of master value.
If the attribute is a name of a follower variable, return its value. If the attribute is a name of a slave variable, return its value.
Otherwise, returns the requested attribute of leader value. Otherwise, returns the requested attribute of master value.
""" """
if name in self.follower: if name in self.slave:
value = self.follower[name] value = self.slave[name]
if isinstance(value, PropertiesOptionError): if isinstance(value, PropertiesOptionError):
raise AttributeError() raise AttributeError()
return value return value
@ -164,36 +164,36 @@ class CreoleLeader:
return getattr(self._value, name) return getattr(self._value, name)
def __getitem__(self, index): def __getitem__(self, index):
"""Get a leader.follower at requested index. """Get a master.slave at requested index.
""" """
ret = {} ret = {}
for key, values in self.follower.items(): for key, values in self.slave.items():
ret[key] = values[index] ret[key] = values[index]
return CreoleLeader(self._value[index], ret, index) return CreoleLeader(self._value[index], ret, index)
def __iter__(self): def __iter__(self):
"""Iterate over leader.follower. """Iterate over master.slave.
Return synchronised value of leader.follower. Return synchronised value of master.slave.
""" """
for i in range(len(self._value)): for i in range(len(self._value)):
ret = {} ret = {}
for key, values in self.follower.items(): for key, values in self.slave.items():
ret[key] = values[i] ret[key] = values[i]
yield CreoleLeader(self._value[i], ret, i) yield CreoleLeader(self._value[i], ret, i)
def __len__(self): def __len__(self):
"""Delegate to leader value """Delegate to master value
""" """
return len(self._value) return len(self._value)
def __repr__(self): def __repr__(self):
"""Show CreoleLeader as dictionary. """Show CreoleLeader as dictionary.
The leader value is stored under 'value' key. The master value is stored under 'value' key.
The followers are stored under 'follower' key. The slaves are stored under 'slave' key.
""" """
return repr({'value': self._value, 'follower': self.follower}) return repr({'value': self._value, 'slave': self.slave})
def __eq__(self, value): def __eq__(self, value):
return value == self._value return value == self._value
@ -214,7 +214,7 @@ class CreoleLeader:
return self._value >= value return self._value >= value
def __str__(self): def __str__(self):
"""Delegate to leader value """Delegate to master value
""" """
return str(self._value) return str(self._value)
@ -227,7 +227,7 @@ class CreoleLeader:
def __contains__(self, item): def __contains__(self, item):
return item in self._value return item in self._value
async def add_follower(self, config, name, path): async def add_slave(self, config, name, path):
if isinstance(self._value, list): if isinstance(self._value, list):
values = [] values = []
for idx in range(len(self._value)): for idx in range(len(self._value)):
@ -237,7 +237,7 @@ class CreoleLeader:
values.append(err) values.append(err)
else: else:
raise Exception('hu?') raise Exception('hu?')
self.follower[name] = values self.slave[name] = values
class CreoleExtra: class CreoleExtra:
@ -261,14 +261,11 @@ class CreoleTemplateEngine:
eosfunc_file: str, eosfunc_file: str,
distrib_dir: str, distrib_dir: str,
tmp_dir: str, tmp_dir: str,
dest_dir: str, dest_dir:str) -> None:
tmpfile_name: str,
) -> None:
self.config = config self.config = config
self.dest_dir = dest_dir self.dest_dir = dest_dir
self.tmp_dir = tmp_dir self.tmp_dir = tmp_dir
self.distrib_dir = distrib_dir self.distrib_dir = distrib_dir
self.tmpfile_name = tmpfile_name
eos = {} eos = {}
if eosfunc_file is not None: if eosfunc_file is not None:
eosfunc = imp.load_source('eosfunc', eosfunc_file) eosfunc = imp.load_source('eosfunc', eosfunc_file)
@ -288,7 +285,7 @@ class CreoleTemplateEngine:
leader = CreoleLeader(await suboption.value.get()) leader = CreoleLeader(await suboption.value.get())
self.creole_variables_dict[await suboption.option.name()] = leader self.creole_variables_dict[await suboption.option.name()] = leader
else: else:
await leader.add_follower(self.config, await leader.add_slave(self.config,
await suboption.option.name(), await suboption.option.name(),
await suboption.option.path()) await suboption.option.path())
else: else:
@ -309,7 +306,7 @@ class CreoleTemplateEngine:
leader = CreoleLeader(await suboption.value.get()) leader = CreoleLeader(await suboption.value.get())
leader_name = await suboption.option.name() leader_name = await suboption.option.name()
else: else:
await leader.add_follower(self.config, await leader.add_slave(self.config,
await suboption.option.name(), await suboption.option.name(),
await suboption.option.path()) await suboption.option.path())
variables[leader_name] = leader variables[leader_name] = leader
@ -345,7 +342,6 @@ class CreoleTemplateEngine:
self.patch_template(filename) self.patch_template(filename)
def process(self, def process(self,
source: str,
destfilename: str, destfilename: str,
filevar: Dict, filevar: Dict,
variable: Any): variable: Any):
@ -354,7 +350,8 @@ class CreoleTemplateEngine:
# full path of the destination file # full path of the destination file
log.info(_(f"Cheetah processing: '{destfilename}'")) log.info(_(f"Cheetah processing: '{destfilename}'"))
try: try:
cheetah_template = CheetahTemplate(source, cheetah_template = CheetahTemplate(join(self.tmp_dir,
filevar['source']),
self.creole_variables_dict, self.creole_variables_dict,
self.eosfunc, self.eosfunc,
destfilename, destfilename,
@ -371,24 +368,19 @@ class CreoleTemplateEngine:
def instance_file(self, def instance_file(self,
filevar: Dict, filevar: Dict,
systemd_rights: list, systemd_rights: list) -> None:
override: bool,
service_name: str) -> None:
"""Run templatisation on one file """Run templatisation on one file
""" """
log.info(_("Instantiating file '{filename}'")) log.info(_("Instantiating file '{filename}'"))
filenames = filevar['name']
if 'variable' in filevar: if 'variable' in filevar:
variable = filevar['variable'] variable = filevar['variable']
else: else:
variable = None variable = None
if override: if not isinstance(filenames, list):
filenames = [f'/system/{service_name}.service.d/rougail.conf'] filenames = [filenames]
else: if variable:
filenames = filevar['name'] variable = [variable]
if not isinstance(filenames, list):
filenames = [filenames]
if variable:
variable = [variable]
for idx, filename in enumerate(filenames): for idx, filename in enumerate(filenames):
destfilename = join(self.dest_dir, destfilename = join(self.dest_dir,
filename[1:]) filename[1:])
@ -397,17 +389,11 @@ class CreoleTemplateEngine:
var = variable[idx] var = variable[idx]
else: else:
var = None var = None
source = join(self.tmp_dir, filevar['source']) self.process(destfilename,
if filevar['templating']: filevar,
self.process(source, var)
destfilename, systemd_rights.append(f'C {filename} {filevar["mode"]} {filevar["owner"]} {filevar["group"]} - -')
filevar, systemd_rights.append(f'z {filename} - - - - -')
var)
else:
copy(source, destfilename)
if not override and self.tmpfile_name:
systemd_rights.append(f'C {filename} {filevar["mode"]} {filevar["owner"]} {filevar["group"]} - -')
systemd_rights.append(f'z {filename} - - - - -')
async def instance_files(self) -> None: async def instance_files(self) -> None:
"""Run templatisation on all files """Run templatisation on all files
@ -425,41 +411,33 @@ class CreoleTemplateEngine:
self.prepare_template(join(self.distrib_dir, template)) self.prepare_template(join(self.distrib_dir, template))
systemd_rights = [] systemd_rights = []
for service_obj in await self.config.option('services').list('all'): for service_obj in await self.config.option('services').list('all'):
service_name = await service_obj.option.doc()
for fills in await service_obj.list('all'): for fills in await service_obj.list('all'):
if await fills.option.name() in ['files', 'overrides']: if await fills.option.name() == 'files':
for fill_obj in await fills.list('all'): for fill_obj in await fills.list('all'):
fill = await fill_obj.value.dict() fill = await fill_obj.value.dict()
filename = fill['source'] filename = fill['source']
distib_file = join(self.distrib_dir, filename) distib_file = join(self.distrib_dir, filename)
if not isfile(distib_file): if not isfile(distib_file):
raise FileNotFound(_(f"File {distib_file} does not exist.")) raise FileNotFound(_(f"File {distib_file} does not exist."))
override = await fills.option.name() == 'overrides' if fill.get('activate', False):
if override or fill.get('activate', False):
self.instance_file(fill, self.instance_file(fill,
systemd_rights, systemd_rights)
override,
service_name,
)
else: else:
log.debug(_("Instantiation of file '{filename}' disabled")) log.debug(_("Instantiation of file '{filename}' disabled"))
if self.tmpfile_name: with open(join(self.dest_dir, 'rougail.conf'), 'w') as fh:
with open(self.tmpfile_name, 'w') as fh: fh.write('\n'.join(systemd_rights))
fh.write('\n'.join(systemd_rights)) fh.write('\n')
fh.write('\n')
async def generate(config: Config, async def generate(config: Config,
eosfunc_file: str, eosfunc_file: str,
distrib_dir: str, distrib_dir: str,
tmp_dir: str, tmp_dir: str,
dest_dir: str, dest_dir: str) -> None:
tmpfile_name: str=None) -> None:
engine = CreoleTemplateEngine(config, engine = CreoleTemplateEngine(config,
eosfunc_file, eosfunc_file,
distrib_dir, distrib_dir,
tmp_dir, tmp_dir,
dest_dir, dest_dir)
tmpfile_name)
await engine.instance_files() await engine.instance_files()

View File

@ -1,34 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="general1">
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="follower2">
<param type="variable">follower1</param>
</fill>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": [], "creole.general1.leader.follower3": []}

View File

@ -1,37 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
<variable name="follower3" type="string" description="follower3" multi="True"/>
</family>
</variables>
<constraints>
<auto name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</auto>
<auto name="calc_val" target="follower2">
<param type="variable">follower1</param>
</auto>
<auto name="calc_val" target="follower3">
<param type="variable">leader</param>
</auto>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
<follower>follower3</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": []}

View File

@ -1,32 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<auto name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</auto>
<auto name="calc_val" target="follower2">
<param type="variable">leader</param>
</auto>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": []}

View File

@ -1,31 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general" mode="expert">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="leadermode" mode="expert">
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<auto name="calc_val" target="leader">
<param name="valeur">valfill</param>
</auto>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1,32 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True" mode="expert"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="follower2">
<param type="variable">follower1</param>
</fill>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}

View File

@ -1,32 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="Général">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="follower2">
<param type="variable">follower1</param>
</fill>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}

View File

@ -1,32 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True" mandatory="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="follower2">
<param type="variable">follower1</param>
</fill>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}

View File

@ -1,32 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True" mandatory="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="follower2">
<param type="variable">follower1</param>
</fill>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}

View File

@ -1,41 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="general1">
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
<variable name="leader1" type="string" description="leader" multi="True"/>
<variable name="follower11" type="string" description="follower1" multi="True"/>
<variable name="follower21" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="follower2">
<param type="variable">follower1</param>
</fill>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
<group leader="leader1">
<follower>follower11</follower>
<follower>follower21</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": [], "creole.general1.leader1.leader1": [], "creole.general1.leader1.follower11": [], "creole.general1.leader1.follower21": []}

View File

@ -1,34 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="general1">
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="follower2">
<param type="variable">follower1</param>
</fill>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": []}

View File

@ -1,28 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="leader" multi="True">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True">
<value>value</value>
</variable>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}

View File

@ -1,33 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="leader" multi="True">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True">
<value>leader</value>
</variable>
<variable name="follower1" type="string" description="follower1" submulti="True">
<value>value</value>
</variable>
<variable name="follower2" type="string" description="follower2" submulti="True">
<value>value1</value>
<value>value2</value>
</variable>
</family>
</variables>
<constraints>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.leader.leader": ["leader"], "creole.general.leader.follower1": [["value"]], "creole.general.leader.follower2": [["value1", "value2"]]}

View File

@ -1,33 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
<variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice">
<choice type="string">oui</choice>
<choice type="string">non</choice>
<property>mandatory</property>
<property>normal</property>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string">
<property>mandatory</property>
<value>leader</value>
</variable>
<variable doc="follower1" multi="submulti" name="follower1" type="string">
<property>mandatory</property>
<property>normal</property>
<value>value</value>
</variable>
<variable doc="follower2" multi="submulti" name="follower2" type="string">
<property>mandatory</property>
<property>normal</property>
<value>value1</value>
<value>value2</value>
</variable>
</leader>
</family>
</family>
</creole>

View File

@ -1,28 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="leader" multi="True">
<value>non</value>
</variable>
<variable name="leader" type="string" description="leader" multi="True">
<value>value</value>
</variable>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.leader.leader": ["value"], "creole.general.leader.follower1": [null], "creole.general.leader.follower2": [null]}

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<rougail>
<variables>
<family name='general'>
<variable name='mode_conteneur_actif' type='oui/non' description="No change">
<value>non</value>
</variable>
</family>
<family name='general1'>
<variable name='leader' type='string' description="leader" multi="True"/>
<variable name='follower1' type='string' description="follower1" multi="True"/>
<variable name='follower2' type='string' description="follower2" multi="True"/>
</family>
</variables>
<constraints>
<fill name='calc_val' target='follower1'>
<param name='valeur'>valfill</param>
</fill>
<fill name='calc_val' target='follower2'>
<param type='variable'>follower1</param>
</fill>
<group leader='leader' description="other description">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": []}

View File

@ -1,34 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">
<choice type="string">oui</choice>
<choice type="string">non</choice>
<property>mandatory</property>
<property>normal</property>
<value type="string">non</value>
</variable>
</family>
<family doc="general1" name="general1">
<property>normal</property>
<leader doc="other description" name="leader">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<property>normal</property>
<value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param>
</value>
</variable>
<variable doc="follower2" multi="True" name="follower2" type="string">
<property>normal</property>
<value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general1.leader.follower1</param>
</value>
</variable>
</leader>
</family>
</family>
</creole>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general_1.leader.leader": [], "creole.general_1.leader.follower1": [], "creole.general_1.leader.follower2": []}

View File

@ -1,34 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="general1">
<variable name="leader" type="string" description="leader" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/>
<variable name="follower2" type="string" description="follower2" submulti="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="follower1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="follower2">
<param type="variable">follower1</param>
</fill>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
</group>
</constraints>
<help/>
</rougail>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": []}

View File

@ -0,0 +1,34 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="general1">
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="slave2">
<param type="variable">slave1</param>
</fill>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.master.master": [], "creole.general1.master.slave1": [], "creole.general1.master.slave2": []}

View File

@ -13,19 +13,19 @@
</family> </family>
<family doc="general1" name="general1"> <family doc="general1" name="general1">
<property>normal</property> <property>normal</property>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general1.leader.follower1</param> <param transitive="False" type="variable">creole.general1.master.slave1</param>
</value> </value>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,28 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="master" multi="True">
<value>non</value>
</variable>
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True">
<value>value</value>
</variable>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}

View File

@ -3,22 +3,22 @@
<family doc="" name="creole"> <family doc="" name="creole">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice"> <variable doc="master" multi="True" name="mode_conteneur_actif" type="choice">
<choice type="string">oui</choice> <choice type="string">oui</choice>
<choice type="string">non</choice> <choice type="string">non</choice>
<property>mandatory</property> <property>mandatory</property>
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>mandatory</property> <property>mandatory</property>
<property>normal</property> <property>normal</property>
<value>value</value> <value>value</value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,28 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="master" multi="True">
<value>non</value>
</variable>
<variable name="master" type="string" description="master" multi="True">
<value>value</value>
</variable>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.master.master": ["value"], "creole.general.master.slave1": [null], "creole.general.master.slave2": [null]}

View File

@ -3,23 +3,23 @@
<family doc="" name="creole"> <family doc="" name="creole">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice"> <variable doc="master" multi="True" name="mode_conteneur_actif" type="choice">
<choice type="string">oui</choice> <choice type="string">oui</choice>
<choice type="string">non</choice> <choice type="string">non</choice>
<property>mandatory</property> <property>mandatory</property>
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"> <variable doc="master" multi="True" name="master" type="string">
<property>mandatory</property> <property>mandatory</property>
<value>value</value> <value>value</value>
</variable> </variable>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<rougail>
<variables>
<family name='general'>
<variable name='mode_conteneur_actif' type='oui/non' description="No change">
<value>non</value>
</variable>
</family>
<family name='general1'>
<variable name='master' type='string' description="master" multi="True"/>
<variable name='slave1' type='string' description="slave1" multi="True"/>
<variable name='slave2' type='string' description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<fill name='calc_val' target='slave1'>
<param name='valeur'>valfill</param>
</fill>
<fill name='calc_val' target='slave2'>
<param type='variable'>slave1</param>
</fill>
<group master='master' description="other description">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.master.master": [], "creole.general1.master.slave1": [], "creole.general1.master.slave2": []}

View File

@ -13,19 +13,19 @@
</family> </family>
<family doc="general1" name="general1"> <family doc="general1" name="general1">
<property>normal</property> <property>normal</property>
<leader doc="leader" name="leader"> <leader doc="other description" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="submulti" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general1.leader.follower1</param> <param transitive="False" type="variable">creole.general1.master.slave1</param>
</value> </value>
</variable> </variable>
</leader> </leader>

View File

@ -10,16 +10,16 @@
</variable> </variable>
</family> </family>
<family name="general-1"> <family name="general-1">
<variable name="leader" type="string" description="leader" multi="True"/> <variable name="master" type="string" description="master" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/> <variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/> <variable name="slave2" type="string" description="slave2" multi="True"/>
</family> </family>
</variables> </variables>
<constraints> <constraints>
<group leader="leader"> <group master="master">
<follower>follower1</follower> <slave>slave1</slave>
<follower>follower2</follower> <slave>slave2</slave>
</group> </group>
</constraints> </constraints>

View File

@ -5,7 +5,7 @@
<variables> <variables>
<family name="general-1"> <family name="general-1">
<variable name="leader" redefine="True" mandatory="True"/> <variable name="master" redefine="True" mandatory="True"/>
</family> </family>
</variables> </variables>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general_1.master.master": [], "creole.general_1.master.slave1": [], "creole.general_1.master.slave2": []}

View File

@ -13,15 +13,15 @@
</family> </family>
<family doc="general-1" name="general_1"> <family doc="general-1" name="general_1">
<property>basic</property> <property>basic</property>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>basic</property> <property>basic</property>
<variable doc="leader" multi="True" name="leader" type="string"> <variable doc="master" multi="True" name="master" type="string">
<property>mandatory</property> <property>mandatory</property>
</variable> </variable>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
</leader> </leader>

View File

@ -1,23 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="Description" submulti="True">
<value>non</value>
<value>oui</value>
</variable>
</family>
<separators/>
</variables>
<constraints>
</constraints>
<help/>
</rougail>
<!-- vim: ts=4 sw=4 expandtab
-->

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": [["non"], ["oui"]]}

View File

@ -1,17 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
<variable doc="Description" multi="submulti" name="mode_conteneur_actif" type="choice">
<choice type="string">oui</choice>
<choice type="string">non</choice>
<property>mandatory</property>
<property>normal</property>
<value type="string">non</value>
<value type="string">oui</value>
</variable>
</family>
<separators/>
</family>
</creole>

View File

@ -0,0 +1,32 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True" mode="expert"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="slave2">
<param type="variable">slave1</param>
</fill>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}

View File

@ -10,19 +10,19 @@
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>expert</property> <property>expert</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general.leader.follower1</param> <param transitive="False" type="variable">creole.general.master.slave1</param>
</value> </value>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,32 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True" mandatory="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="slave2">
<param type="variable">slave1</param>
</fill>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}

View File

@ -10,20 +10,20 @@
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>mandatory</property> <property>mandatory</property>
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general.leader.follower1</param> <param transitive="False" type="variable">creole.general.master.slave1</param>
</value> </value>
</variable> </variable>
</leader> </leader>

View File

@ -13,8 +13,8 @@
</variables> </variables>
<constraints> <constraints>
<group leader="nut_monitor_netmask"> <group master="nut_monitor_netmask">
<follower>nut_monitor_host</follower> <slave>nut_monitor_host</slave>
</group> </group>
</constraints> </constraints>

View File

@ -0,0 +1,32 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="master" type="string" description="master" multi="True" mandatory="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="slave2">
<param type="variable">slave1</param>
</fill>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}

View File

@ -10,21 +10,21 @@
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>basic</property> <property>basic</property>
<variable doc="leader" multi="True" name="leader" type="string"> <variable doc="master" multi="True" name="master" type="string">
<property>mandatory</property> <property>mandatory</property>
</variable> </variable>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general.leader.follower1</param> <param transitive="False" type="variable">creole.general.master.slave1</param>
</value> </value>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,41 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="general1">
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
<variable name="master1" type="string" description="master" multi="True"/>
<variable name="slave11" type="string" description="slave1" multi="True"/>
<variable name="slave21" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="slave2">
<param type="variable">slave1</param>
</fill>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
<group master="master1">
<slave>slave11</slave>
<slave>slave21</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.master.master": [], "creole.general1.master.slave1": [], "creole.general1.master.slave2": [], "creole.general1.master1.master1": [], "creole.general1.master1.slave11": [], "creole.general1.master1.slave21": []}

View File

@ -13,29 +13,29 @@
</family> </family>
<family doc="general1" name="general1"> <family doc="general1" name="general1">
<property>normal</property> <property>normal</property>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general1.leader.follower1</param> <param transitive="False" type="variable">creole.general1.master.slave1</param>
</value> </value>
</variable> </variable>
</leader> </leader>
<leader doc="leader" name="leader1"> <leader doc="master" name="master1">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader1" type="string"/> <variable doc="master" multi="True" name="master1" type="string"/>
<variable doc="follower1" multi="True" name="follower11" type="string"> <variable doc="slave1" multi="True" name="slave11" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower21" type="string"> <variable doc="slave2" multi="True" name="slave21" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,34 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="general1">
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="slave2">
<param type="variable">slave1</param>
</fill>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -5,13 +5,13 @@
<variables> <variables>
<family name="general1"> <family name="general1">
<variable name="follower3" type="string" description="follower3" multi="True"/> <variable name="slave3" type="string" description="slave3" multi="True"/>
</family> </family>
</variables> </variables>
<constraints> <constraints>
<group leader="leader"> <group master="master">
<follower>follower3</follower> <slave>slave3</slave>
</group> </group>
</constraints> </constraints>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general1.master.master": [], "creole.general1.master.slave1": [], "creole.general1.master.slave2": [], "creole.general1.master.slave3": []}

View File

@ -13,22 +13,22 @@
</family> </family>
<family doc="general1" name="general1"> <family doc="general1" name="general1">
<property>normal</property> <property>normal</property>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general1.leader.follower1</param> <param transitive="False" type="variable">creole.general1.master.slave1</param>
</value> </value>
</variable> </variable>
<variable doc="follower3" multi="True" name="follower3" type="string"> <variable doc="slave3" multi="True" name="slave3" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,37 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
<variable name="slave3" type="string" description="slave3" multi="True"/>
</family>
</variables>
<constraints>
<auto name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</auto>
<auto name="calc_val" target="slave2">
<param type="variable">slave1</param>
</auto>
<auto name="calc_val" target="slave3">
<param type="variable">master</param>
</auto>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
<slave>slave3</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": []}

View File

@ -10,10 +10,10 @@
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>force_default_on_freeze</property> <property>force_default_on_freeze</property>
<property>frozen</property> <property>frozen</property>
<property>hidden</property> <property>hidden</property>
@ -22,22 +22,22 @@
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>force_default_on_freeze</property> <property>force_default_on_freeze</property>
<property>frozen</property> <property>frozen</property>
<property>hidden</property> <property>hidden</property>
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general.leader.follower1</param> <param transitive="False" type="variable">creole.general.master.slave1</param>
</value> </value>
</variable> </variable>
<variable doc="follower3" multi="True" name="follower3" type="string"> <variable doc="slave3" multi="True" name="slave3" type="string">
<property>force_default_on_freeze</property> <property>force_default_on_freeze</property>
<property>frozen</property> <property>frozen</property>
<property>hidden</property> <property>hidden</property>
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general.leader.leader</param> <param transitive="False" type="variable">creole.general.master.master</param>
</value> </value>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,32 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<auto name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</auto>
<auto name="calc_val" target="slave2">
<param type="variable">master</param>
</auto>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": []}

View File

@ -10,10 +10,10 @@
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>force_default_on_freeze</property> <property>force_default_on_freeze</property>
<property>frozen</property> <property>frozen</property>
<property>hidden</property> <property>hidden</property>
@ -22,13 +22,13 @@
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>force_default_on_freeze</property> <property>force_default_on_freeze</property>
<property>frozen</property> <property>frozen</property>
<property>hidden</property> <property>hidden</property>
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general.leader.leader</param> <param transitive="False" type="variable">creole.general.master.master</param>
</value> </value>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="general" mode="expert">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
</family>
<family name="mastermode" mode="expert">
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<auto name="calc_val" target="master">
<param name="valeur">valfill</param>
</auto>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -11,22 +11,22 @@
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
</family> </family>
<family doc="leadermode" name="leadermode"> <family doc="mastermode" name="mastermode">
<property>expert</property> <property>expert</property>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>hidden</property> <property>hidden</property>
<property>expert</property> <property>expert</property>
<variable doc="leader" multi="True" name="leader" type="string"> <variable doc="master" multi="True" name="master" type="string">
<property>force_default_on_freeze</property> <property>force_default_on_freeze</property>
<property>frozen</property> <property>frozen</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>expert</property> <property>expert</property>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>expert</property> <property>expert</property>
</variable> </variable>
</leader> </leader>

View File

@ -0,0 +1,32 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<services/>
<variables>
<family name="Général">
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value>
</variable>
<variable name="master" type="string" description="master" multi="True"/>
<variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="slave2" type="string" description="slave2" multi="True"/>
</family>
</variables>
<constraints>
<fill name="calc_val" target="slave1">
<param name="valeur">valfill</param>
</fill>
<fill name="calc_val" target="slave2">
<param type="variable">slave1</param>
</fill>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>
<help/>
</rougail>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}

View File

@ -10,19 +10,19 @@
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string"> <variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param> <param name="valeur" transitive="False" type="string">valfill</param>
</value> </value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
<value name="calc_val" type="calculation"> <value name="calc_val" type="calculation">
<param transitive="False" type="variable">creole.general.leader.follower1</param> <param transitive="False" type="variable">creole.general.master.slave1</param>
</value> </value>
</variable> </variable>
</leader> </leader>

View File

@ -1 +0,0 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}

View File

@ -8,20 +8,20 @@
<variable name="mode_conteneur_actif" type="oui/non" description="No change"> <variable name="mode_conteneur_actif" type="oui/non" description="No change">
<value>non</value> <value>non</value>
</variable> </variable>
<variable name="leader" type="string" description="leader" multi="True"/> <variable name="master" type="string" description="master" multi="True"/>
<variable name="follower1" type="string" description="follower1" multi="True"/> <variable name="slave1" type="string" description="slave1" multi="True"/>
<variable name="follower2" type="string" description="follower2" multi="True"/> <variable name="slave2" type="string" description="slave2" multi="True"/>
</family> </family>
<separators/> <separators/>
</variables> </variables>
<constraints> <constraints>
<check name="valid_enum" target="follower1"> <check name="valid_enum" target="slave1">
<param>['a','b','c']</param> <param>['a','b','c']</param>
</check> </check>
<group leader="leader"> <group master="master">
<follower>follower1</follower> <slave>slave1</slave>
<follower>follower2</follower> <slave>slave2</slave>
</group> </group>
</constraints> </constraints>

View File

@ -0,0 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}

View File

@ -10,10 +10,10 @@
<property>normal</property> <property>normal</property>
<value type="string">non</value> <value type="string">non</value>
</variable> </variable>
<leader doc="leader" name="leader"> <leader doc="master" name="master">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/> <variable doc="master" multi="True" name="master" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="choice"> <variable doc="slave1" multi="True" name="slave1" type="choice">
<choice type="string">a</choice> <choice type="string">a</choice>
<choice type="string">b</choice> <choice type="string">b</choice>
<choice type="string">c</choice> <choice type="string">c</choice>
@ -21,7 +21,7 @@
<property>normal</property> <property>normal</property>
<value type="string">a</value> <value type="string">a</value>
</variable> </variable>
<variable doc="follower2" multi="True" name="follower2" type="string"> <variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property> <property>normal</property>
</variable> </variable>
</leader> </leader>

View File

@ -3,7 +3,7 @@
<services> <services>
<service name="test"> <service name="test">
<file name="/etc/file" filelist="afilllist"/> <file name="/tmp/file" filelist="afilllist"/>
</service> </service>
</services> </services>

View File

@ -1 +1 @@
{"creole.general.condition": "non", "creole.general.mode_conteneur_actif": "non", "creole.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/etc/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file", "services.service0.files.file0.templating": true, "services.service0.files.file0.activate": true} {"creole.general.condition": "non", "creole.general.mode_conteneur_actif": "non", "creole.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file", "services.service0.files.file0.activate": true}

View File

@ -18,7 +18,7 @@
</variable> </variable>
<variable doc="" multi="False" name="name" type="string"> <variable doc="" multi="False" name="name" type="string">
<property>mandatory</property> <property>mandatory</property>
<value>/etc/file</value> <value>/tmp/file</value>
</variable> </variable>
<variable doc="" multi="False" name="owner" type="string"> <variable doc="" multi="False" name="owner" type="string">
<property>mandatory</property> <property>mandatory</property>
@ -32,10 +32,6 @@
<property>mandatory</property> <property>mandatory</property>
<value>file</value> <value>file</value>
</variable> </variable>
<variable doc="" multi="False" name="templating" type="boolean">
<property>mandatory</property>
<value>True</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean"> <variable doc="" multi="False" name="activate" type="boolean">
<property>mandatory</property> <property>mandatory</property>
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property> <property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>

View File

@ -3,7 +3,7 @@
<services> <services>
<service name="test"> <service name="test">
<file name="/etc/file" filelist="afilllist"/> <file name="/tmp/file" filelist="afilllist"/>
</service> </service>
</services> </services>

View File

@ -1 +1 @@
{"creole.general.condition": "oui", "services.service0.files.file0.group": "root", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/etc/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file", "services.service0.files.file0.templating": true} {"creole.general.condition": "oui", "services.service0.files.file0.group": "root", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file"}

View File

@ -18,7 +18,7 @@
</variable> </variable>
<variable doc="" multi="False" name="name" type="string"> <variable doc="" multi="False" name="name" type="string">
<property>mandatory</property> <property>mandatory</property>
<value>/etc/file</value> <value>/tmp/file</value>
</variable> </variable>
<variable doc="" multi="False" name="owner" type="string"> <variable doc="" multi="False" name="owner" type="string">
<property>mandatory</property> <property>mandatory</property>
@ -32,10 +32,6 @@
<property>mandatory</property> <property>mandatory</property>
<value>file</value> <value>file</value>
</variable> </variable>
<variable doc="" multi="False" name="templating" type="boolean">
<property>mandatory</property>
<value>True</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean"> <variable doc="" multi="False" name="activate" type="boolean">
<property>mandatory</property> <property>mandatory</property>
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property> <property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>

View File

@ -1 +1 @@
{"creole.general.condition": "non", "creole.general.mode_conteneur_actif": "non", "creole.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file1", "services.service0.files.file0.owner": "root", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file1", "services.service0.files.file0.templating": true, "services.service0.files.file0.activate": true, "services.service0.files.file1.group": "root", "services.service0.files.file1.mkdir": false, "services.service0.files.file1.mode": "0644", "services.service0.files.file1.name": "/tmp/file2", "services.service0.files.file1.owner": "root", "services.service0.files.file1.rm": false, "services.service0.files.file1.source": "file2", "services.service0.files.file1.templating": true, "services.service0.files.file1.activate": true} {"creole.general.condition": "non", "creole.general.mode_conteneur_actif": "non", "creole.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file1", "services.service0.files.file0.owner": "root", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file1", "services.service0.files.file0.activate": true, "services.service0.files.file1.group": "root", "services.service0.files.file1.mkdir": false, "services.service0.files.file1.mode": "0644", "services.service0.files.file1.name": "/tmp/file2", "services.service0.files.file1.owner": "root", "services.service0.files.file1.rm": false, "services.service0.files.file1.source": "file2", "services.service0.files.file1.activate": true}

View File

@ -32,10 +32,6 @@
<property>mandatory</property> <property>mandatory</property>
<value>file1</value> <value>file1</value>
</variable> </variable>
<variable doc="" multi="False" name="templating" type="boolean">
<property>mandatory</property>
<value>True</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean"> <variable doc="" multi="False" name="activate" type="boolean">
<property>mandatory</property> <property>mandatory</property>
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property> <property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>
@ -71,10 +67,6 @@
<property>mandatory</property> <property>mandatory</property>
<value>file2</value> <value>file2</value>
</variable> </variable>
<variable doc="" multi="False" name="templating" type="boolean">
<property>mandatory</property>
<value>True</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean"> <variable doc="" multi="False" name="activate" type="boolean">
<property>mandatory</property> <property>mandatory</property>
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property> <property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>

Some files were not shown because too many files have changed in this diff Show More