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
from copy import copy
from typing import List
from collections import OrderedDict
from os.path import join, basename
@ -114,7 +113,7 @@ class ServiceAnnotator:
def convert_service_to_family(self, service_name, service_family, service):
for elttype, values in vars(service).items():
if elttype in ['name', 'index', 'method']:
if elttype in ['name', 'index']:
continue
family = self.objectspace.family()
family.name = elttype + 's'
@ -185,10 +184,7 @@ class ServiceAnnotator:
family.name = '{}{}'.format(name, index)
family.variable = variables
family.mode = None
self.paths.add_family('services',
subpath,
family,
)
self.paths.append('family', subpath, 'services', creoleobj=family)
families.append(family)
return families
@ -234,19 +230,11 @@ class ServiceAnnotator:
choices.append(choice)
variable.choice = choices
path = '{}.{}'.format(subpath, name)
self.paths.add_variable('services',
path,
'service',
False,
variable,
)
self.paths.append('variable', path, 'services', 'service', 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):
if not hasattr(file_, 'file_type') or file_.file_type == "UnicodeOption":
if file_.file_type == "UnicodeOption":
if not hasattr(file_, 'source'):
file_.source = basename(file_.name)
elif not hasattr(file_, 'source'):
@ -339,10 +327,7 @@ class ServiceAnnotator:
family.name = '{}{}'.format(name, index)
family.variable = variables
family.mode = None
self.paths.add_family('services',
subpath,
family,
)
self.paths.append('family', subpath, 'services', creoleobj=family)
families.append(family)
return families
@ -455,105 +440,61 @@ class SpaceAnnotator(object):
variable.help = hlp.text
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
if hasattr(self.space, 'constraints') and hasattr(self.space.constraints, 'group'):
if hasattr(self.space, 'constraints'):
if hasattr(self.space.constraints, 'group'):
for group in self.space.constraints.group:
leader_fullname = group.leader
follower_names = list(group.follower.keys())
leader_fullname = group.master
follower_names = list(group.slave.keys())
leader_family_name = self.paths.get_variable_family_name(leader_fullname)
namespace = self.paths.get_variable_namespace(leader_fullname)
leader_name = self.paths.get_variable_name(leader_fullname)
ori_leader_family = self.space.variables[namespace].family[leader_family_name]
has_a_leader = False
for variable in list(ori_leader_family.variable.values()):
leader_family = self.space.variables[namespace].family[leader_family_name]
leader_path = namespace + '.' + leader_family_name
is_leader = False
for variable in list(leader_family.variable.values()):
if isinstance(variable, self.objectspace.Leadership):
# append follower to an existed leadership
if variable.name == leader_name:
leader_space = variable
has_a_leader = True
is_leader = True
else:
if has_a_leader:
# it's a follower
self.manage_follower(namespace,
leader_family_name,
variable,
leader_name,
follower_names,
leader_space,
)
ori_leader_family.variable.pop(variable.name)
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 == []:
# no more follower
break
elif variable.name == leader_name:
# it's a leader
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()
self.manage_leader(leader_space,
leader_family_name,
leader_name,
namespace,
variable,
group,
leader_fullname,
)
has_a_leader = True
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:
raise CreoleDictConsistencyError(_('cannot found followers {}').format(follower_names))
del self.space.constraints.group
@ -1120,11 +1061,7 @@ class SpaceAnnotator(object):
# if param.optional is True:
# param_option_indexes.append(fill_idx)
try:
param.text, suffix = self.paths.get_variable_path(param.text,
namespace,
with_suffix=True)
if suffix:
param.suffix = suffix
param.text = self.paths.get_variable_path(param.text, namespace)
except CreoleDictConsistencyError as err:
if param.optional is True:
param_option_indexes.append(fill_idx)

View File

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

View File

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

View File

@ -34,8 +34,8 @@ from .annotator import ERASED_ATTRIBUTES, ActionAnnotator, ServiceAnnotator, Spa
from .utils import normalize_family
from .error import CreoleOperationError, SpaceObjShallNotBeUpdated, CreoleDictConsistencyError
# CreoleObjSpace's elements like 'family' or 'follower', that shall be forced to the Redefinable type
FORCE_REDEFINABLES = ('family', 'follower', 'service', 'disknod', 'variables', 'family_action')
# CreoleObjSpace's elements like 'family' or 'slave', that shall be forced to the Redefinable type
FORCE_REDEFINABLES = ('family', 'slave', 'service', 'disknod', 'variables', 'family_action')
# CreoleObjSpace's elements that shall be forced to the UnRedefinable type
FORCE_UNREDEFINABLES = ('value', 'input', 'profile', 'ewtapp', 'tag', 'saltaction')
# CreoleObjSpace's elements that shall be set to the UnRedefinable type
@ -194,12 +194,7 @@ class CreoleObjSpace(object):
if 'variable' not in vars(family):
family.variable = OrderedDict()
family.variable[name] = variable_obj
self.paths.add_variable(namespace,
name,
family.name,
False,
variable_obj,
)
self.paths.append('variable', name, namespace, family.name, variable_obj)
return variable_obj
def remove_check(self, name): # pylint: disable=C0111
@ -424,22 +419,13 @@ class CreoleObjSpace(object):
if list(child) != []:
self.xml_parse_document(child, creoleobj, namespace, is_in_family)
def _fill_creoleobj_path_attribute(self,
space,
child,
namespace,
document,
creoleobj,
): # pylint: disable=R0913
def _fill_creoleobj_path_attribute(self, space, child, namespace, document, creoleobj): # pylint: disable=R0913
"""Fill self.paths attributes
"""
if not isinstance(space, self.help): # pylint: disable=E1101
if child.tag == 'variable':
family_name = normalize_family(document.attrib['name'])
self.paths.add_variable(namespace,
child.attrib['name'],
family_name,
document.attrib.get('dynamic') != None,
self.paths.append('variable', child.attrib['name'], namespace, family_name,
creoleobj)
if child.attrib.get('redefine', 'False') == 'True':
if namespace == 'creole':
@ -452,10 +438,7 @@ class CreoleObjSpace(object):
family_name = normalize_family(child.attrib['name'])
if namespace != 'creole':
family_name = namespace + '.' + family_name
self.paths.add_family(namespace,
family_name,
creoleobj,
)
self.paths.append('family', family_name, namespace, creoleobj=creoleobj)
creoleobj.path = self.paths.get_family_path(family_name, namespace)
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)
class Path:
class Path(object):
"""Helper class to handle the `path` attribute of a CreoleObjSpace
instance.
@ -602,27 +585,28 @@ class Path:
self.variables = {}
self.families = {}
# Family
def add_family(self,
namespace: str,
name: str,
creoleobj: str,
) -> str: # pylint: disable=C0111
self.families[name] = dict(name=name,
namespace=namespace,
creoleobj=creoleobj,
)
def append(self, pathtype, name, namespace, family=None, creoleobj=None): # pylint: disable=C0111
if pathtype == 'family':
self.families[name] = dict(name=name, namespace=namespace, creoleobj=creoleobj)
elif pathtype == 'variable':
if namespace == 'creole':
varname = name
else:
if '.' in name:
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,
name: str,
current_namespace: str,
) -> str: # pylint: disable=C0111
def get_family_path(self, name, current_namespace): # pylint: disable=C0111
if current_namespace is None: # pragma: no cover
raise CreoleOperationError('current_namespace must not be None')
dico = self.families[normalize_family(name,
check_name=False,
allow_dot=True,
)]
allow_dot=True)]
if dico['namespace'] != 'creole' and current_namespace != dico['namespace']:
raise CreoleDictConsistencyError(_('A family located in the {} namespace '
'shall not be used in the {} namespace').format(
@ -632,112 +616,43 @@ class Path:
path = '.'.join([dico['namespace'], path])
return path
def get_family_namespace(self,
name: str,
) -> str: # pylint: disable=C0111
def get_family_namespace(self, name): # pylint: disable=C0111
dico = self.families[name]
if dico['namespace'] is None:
return dico['name']
return dico['namespace']
def get_family_obj(self,
name: str,
) -> 'Family': # pylint: disable=C0111
def get_family_obj(self, name): # pylint: disable=C0111
if name not in self.families:
raise CreoleDictConsistencyError(_('unknown family {}').format(name))
dico = self.families[name]
return dico['creoleobj']
# Leadership
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
def get_variable_name(self, name): # pylint: disable=C0111
dico = self._get_variable(name)
if dico['leader'] != None:
raise CreoleDictConsistencyError(_('Already defined leader {} for variable'
' {}'.format(dico['leader'], name)))
dico['leader'] = leader_name
return dico['name']
def get_leader(self, name): # pylint: disable=C0111
return self._get_variable(name)['leader']
def get_variable_obj(self, name): # pylint: disable=C0111
dico = self._get_variable(name)
return dico['creoleobj']
# Variable
def add_variable(self,
namespace: str,
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_family_name(self, name): # pylint: disable=C0111
dico = self._get_variable(name)
return dico['family']
def get_variable_name(self,
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
def get_variable_family_path(self, name): # pylint: disable=C0111
dico = self._get_variable(name)
list_path = [dico['namespace'], dico['family']]
if dico['leader'] is not None:
list_path.append(dico['leader'])
return '.'.join(list_path)
def get_variable_namespace(self,
name: str,
) -> str: # pylint: disable=C0111
def get_variable_namespace(self, name): # pylint: disable=C0111
return self._get_variable(name)['namespace']
def get_variable_path(self,
name: str,
current_namespace: str,
allow_source: str=False,
with_suffix: bool=False,
) -> str: # pylint: disable=C0111
def get_variable_path(self, name, current_namespace, allow_source=False): # pylint: disable=C0111
if current_namespace is None: # pragma: no cover
raise CreoleOperationError('current_namespace must not be None')
if with_suffix:
dico, suffix = self._get_variable(name,
with_suffix=True,
)
else:
dico = self._get_variable(name)
if not allow_source:
if dico['namespace'] not in ['creole', 'services'] and current_namespace != dico['namespace']:
@ -745,34 +660,37 @@ class Path:
'shall not be used in the {} namespace').format(
dico['namespace'], current_namespace))
if '.' in dico['name']:
value = dico['name']
else:
return dico['name']
list_path = [dico['namespace'], dico['family']]
if dico['leader'] is not None:
list_path.append(dico['leader'])
list_path.append(dico['name'])
value = '.'.join(list_path)
if with_suffix:
return value, suffix
return value
return '.'.join(list_path)
def path_is_defined(self,
name: str,
) -> str: # pylint: disable=C0111
def path_is_defined(self, name): # pylint: disable=C0111
return name in self.variables
def _get_variable(self,
name: str,
with_suffix: bool=False,
) -> str:
def set_leader(self, name, leader): # pylint: disable=C0111
dico = self._get_variable(name)
namespace = dico['namespace']
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.startswith('creole.'):
name = name.split('.')[-1]
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))
if with_suffix:
return self.variables[name], None
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:
splitted_var = varname.split('.')
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)
leader, follower = splitted_var
if leader in self.context:
return follower in self.context[leader].follower.keys()
master, slave = splitted_var
if master in self.context:
return slave in self.context[master].slave.keys()
return False
else:
return varname in self.context
@ -133,7 +133,7 @@ class CheetahTemplate(ChtTemplate):
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:
for ip in iplist:
@ -143,20 +143,20 @@ class CreoleLeader:
index is used for CreoleLint
"""
self._value = value
if follower is not None:
self.follower = follower
if slave is not None:
self.slave = slave
else:
self.follower = {}
self.slave = {}
self._index = index
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.
Otherwise, returns the requested attribute of leader value.
If the attribute is a name of a slave variable, return its value.
Otherwise, returns the requested attribute of master value.
"""
if name in self.follower:
value = self.follower[name]
if name in self.slave:
value = self.slave[name]
if isinstance(value, PropertiesOptionError):
raise AttributeError()
return value
@ -164,36 +164,36 @@ class CreoleLeader:
return getattr(self._value, name)
def __getitem__(self, index):
"""Get a leader.follower at requested index.
"""Get a master.slave at requested index.
"""
ret = {}
for key, values in self.follower.items():
for key, values in self.slave.items():
ret[key] = values[index]
return CreoleLeader(self._value[index], ret, index)
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)):
ret = {}
for key, values in self.follower.items():
for key, values in self.slave.items():
ret[key] = values[i]
yield CreoleLeader(self._value[i], ret, i)
def __len__(self):
"""Delegate to leader value
"""Delegate to master value
"""
return len(self._value)
def __repr__(self):
"""Show CreoleLeader as dictionary.
The leader value is stored under 'value' key.
The followers are stored under 'follower' key.
The master value is stored under 'value' 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):
return value == self._value
@ -214,7 +214,7 @@ class CreoleLeader:
return self._value >= value
def __str__(self):
"""Delegate to leader value
"""Delegate to master value
"""
return str(self._value)
@ -227,7 +227,7 @@ class CreoleLeader:
def __contains__(self, item):
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):
values = []
for idx in range(len(self._value)):
@ -237,7 +237,7 @@ class CreoleLeader:
values.append(err)
else:
raise Exception('hu?')
self.follower[name] = values
self.slave[name] = values
class CreoleExtra:
@ -261,14 +261,11 @@ class CreoleTemplateEngine:
eosfunc_file: str,
distrib_dir: str,
tmp_dir: str,
dest_dir: str,
tmpfile_name: str,
) -> None:
dest_dir:str) -> None:
self.config = config
self.dest_dir = dest_dir
self.tmp_dir = tmp_dir
self.distrib_dir = distrib_dir
self.tmpfile_name = tmpfile_name
eos = {}
if eosfunc_file is not None:
eosfunc = imp.load_source('eosfunc', eosfunc_file)
@ -288,7 +285,7 @@ class CreoleTemplateEngine:
leader = CreoleLeader(await suboption.value.get())
self.creole_variables_dict[await suboption.option.name()] = leader
else:
await leader.add_follower(self.config,
await leader.add_slave(self.config,
await suboption.option.name(),
await suboption.option.path())
else:
@ -309,7 +306,7 @@ class CreoleTemplateEngine:
leader = CreoleLeader(await suboption.value.get())
leader_name = await suboption.option.name()
else:
await leader.add_follower(self.config,
await leader.add_slave(self.config,
await suboption.option.name(),
await suboption.option.path())
variables[leader_name] = leader
@ -345,7 +342,6 @@ class CreoleTemplateEngine:
self.patch_template(filename)
def process(self,
source: str,
destfilename: str,
filevar: Dict,
variable: Any):
@ -354,7 +350,8 @@ class CreoleTemplateEngine:
# full path of the destination file
log.info(_(f"Cheetah processing: '{destfilename}'"))
try:
cheetah_template = CheetahTemplate(source,
cheetah_template = CheetahTemplate(join(self.tmp_dir,
filevar['source']),
self.creole_variables_dict,
self.eosfunc,
destfilename,
@ -371,20 +368,15 @@ class CreoleTemplateEngine:
def instance_file(self,
filevar: Dict,
systemd_rights: list,
override: bool,
service_name: str) -> None:
systemd_rights: list) -> None:
"""Run templatisation on one file
"""
log.info(_("Instantiating file '{filename}'"))
filenames = filevar['name']
if 'variable' in filevar:
variable = filevar['variable']
else:
variable = None
if override:
filenames = [f'/system/{service_name}.service.d/rougail.conf']
else:
filenames = filevar['name']
if not isinstance(filenames, list):
filenames = [filenames]
if variable:
@ -397,15 +389,9 @@ class CreoleTemplateEngine:
var = variable[idx]
else:
var = None
source = join(self.tmp_dir, filevar['source'])
if filevar['templating']:
self.process(source,
destfilename,
self.process(destfilename,
filevar,
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} - - - - -')
@ -425,27 +411,21 @@ class CreoleTemplateEngine:
self.prepare_template(join(self.distrib_dir, template))
systemd_rights = []
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'):
if await fills.option.name() in ['files', 'overrides']:
if await fills.option.name() == 'files':
for fill_obj in await fills.list('all'):
fill = await fill_obj.value.dict()
filename = fill['source']
distib_file = join(self.distrib_dir, filename)
if not isfile(distib_file):
raise FileNotFound(_(f"File {distib_file} does not exist."))
override = await fills.option.name() == 'overrides'
if override or fill.get('activate', False):
if fill.get('activate', False):
self.instance_file(fill,
systemd_rights,
override,
service_name,
)
systemd_rights)
else:
log.debug(_("Instantiation of file '{filename}' disabled"))
if self.tmpfile_name:
with open(self.tmpfile_name, 'w') as fh:
with open(join(self.dest_dir, 'rougail.conf'), 'w') as fh:
fh.write('\n'.join(systemd_rights))
fh.write('\n')
@ -454,12 +434,10 @@ async def generate(config: Config,
eosfunc_file: str,
distrib_dir: str,
tmp_dir: str,
dest_dir: str,
tmpfile_name: str=None) -> None:
dest_dir: str) -> None:
engine = CreoleTemplateEngine(config,
eosfunc_file,
distrib_dir,
tmp_dir,
dest_dir,
tmpfile_name)
dest_dir)
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 doc="general1" name="general1">
<property>normal</property>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" 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">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
<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>
</variable>
</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="general" name="general">
<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">non</choice>
<property>mandatory</property>
<property>normal</property>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" type="string">
<property>mandatory</property>
<property>normal</property>
<value>value</value>
</variable>
<variable doc="follower2" multi="True" name="follower2" type="string">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
</variable>
</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="general" name="general">
<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">non</choice>
<property>mandatory</property>
<property>normal</property>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string">
<variable doc="master" multi="True" name="master" type="string">
<property>mandatory</property>
<value>value</value>
</variable>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property>
</variable>
<variable doc="follower2" multi="True" name="follower2" type="string">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
</variable>
</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 doc="general1" name="general1">
<property>normal</property>
<leader doc="leader" name="leader">
<leader doc="other description" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" 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="submulti" name="follower2" type="string">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
<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>
</variable>
</leader>

View File

@ -10,16 +10,16 @@
</variable>
</family>
<family name="general-1">
<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="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>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</constraints>

View File

@ -5,7 +5,7 @@
<variables>
<family name="general-1">
<variable name="leader" redefine="True" mandatory="True"/>
<variable name="master" redefine="True" mandatory="True"/>
</family>
</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 doc="general-1" name="general_1">
<property>basic</property>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>basic</property>
<variable doc="leader" multi="True" name="leader" type="string">
<variable doc="master" multi="True" name="master" type="string">
<property>mandatory</property>
</variable>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="slave1" multi="True" name="slave1" type="string">
<property>normal</property>
</variable>
<variable doc="follower2" multi="True" name="follower2" type="string">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
</variable>
</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>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" 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">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>expert</property>
<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>
</variable>
</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>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" type="string">
<property>mandatory</property>
<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">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
<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>
</variable>
</leader>

View File

@ -13,8 +13,8 @@
</variables>
<constraints>
<group leader="nut_monitor_netmask">
<follower>nut_monitor_host</follower>
<group master="nut_monitor_netmask">
<slave>nut_monitor_host</slave>
</group>
</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>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>basic</property>
<variable doc="leader" multi="True" name="leader" type="string">
<variable doc="master" multi="True" name="master" type="string">
<property>mandatory</property>
</variable>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="slave1" multi="True" name="slave1" 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">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
<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>
</variable>
</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 doc="general1" name="general1">
<property>normal</property>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" 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">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
<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>
</variable>
</leader>
<leader doc="leader" name="leader1">
<leader doc="master" name="master1">
<property>normal</property>
<variable doc="leader" multi="True" name="leader1" type="string"/>
<variable doc="follower1" multi="True" name="follower11" type="string">
<variable doc="master" multi="True" name="master1" type="string"/>
<variable doc="slave1" multi="True" name="slave11" type="string">
<property>normal</property>
</variable>
<variable doc="follower2" multi="True" name="follower21" type="string">
<variable doc="slave2" multi="True" name="slave21" type="string">
<property>normal</property>
</variable>
</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>
<family name="general1">
<variable name="follower3" type="string" description="follower3" multi="True"/>
<variable name="slave3" type="string" description="slave3" multi="True"/>
</family>
</variables>
<constraints>
<group leader="leader">
<follower>follower3</follower>
<group master="master">
<slave>slave3</slave>
</group>
</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 doc="general1" name="general1">
<property>normal</property>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" 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">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
<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>
</variable>
<variable doc="follower3" multi="True" name="follower3" type="string">
<variable doc="slave3" multi="True" name="slave3" type="string">
<property>normal</property>
</variable>
</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>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" type="string">
<property>force_default_on_freeze</property>
<property>frozen</property>
<property>hidden</property>
@ -22,22 +22,22 @@
<param name="valeur" transitive="False" type="string">valfill</param>
</value>
</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>frozen</property>
<property>hidden</property>
<property>normal</property>
<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>
</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>frozen</property>
<property>hidden</property>
<property>normal</property>
<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>
</variable>
</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>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" type="string">
<property>force_default_on_freeze</property>
<property>frozen</property>
<property>hidden</property>
@ -22,13 +22,13 @@
<param name="valeur" transitive="False" type="string">valfill</param>
</value>
</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>frozen</property>
<property>hidden</property>
<property>normal</property>
<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>
</variable>
</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>
</variable>
</family>
<family doc="leadermode" name="leadermode">
<family doc="mastermode" name="mastermode">
<property>expert</property>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>hidden</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>frozen</property>
<value name="calc_val" type="calculation">
<param name="valeur" transitive="False" type="string">valfill</param>
</value>
</variable>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="slave1" multi="True" name="slave1" type="string">
<property>expert</property>
</variable>
<variable doc="follower2" multi="True" name="follower2" type="string">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>expert</property>
</variable>
</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>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="string">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" 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">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
<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>
</variable>
</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">
<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="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>
<separators/>
</variables>
<constraints>
<check name="valid_enum" target="follower1">
<check name="valid_enum" target="slave1">
<param>['a','b','c']</param>
</check>
<group leader="leader">
<follower>follower1</follower>
<follower>follower2</follower>
<group master="master">
<slave>slave1</slave>
<slave>slave2</slave>
</group>
</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>
<value type="string">non</value>
</variable>
<leader doc="leader" name="leader">
<leader doc="master" name="master">
<property>normal</property>
<variable doc="leader" multi="True" name="leader" type="string"/>
<variable doc="follower1" multi="True" name="follower1" type="choice">
<variable doc="master" multi="True" name="master" type="string"/>
<variable doc="slave1" multi="True" name="slave1" type="choice">
<choice type="string">a</choice>
<choice type="string">b</choice>
<choice type="string">c</choice>
@ -21,7 +21,7 @@
<property>normal</property>
<value type="string">a</value>
</variable>
<variable doc="follower2" multi="True" name="follower2" type="string">
<variable doc="slave2" multi="True" name="slave2" type="string">
<property>normal</property>
</variable>
</leader>

View File

@ -3,7 +3,7 @@
<services>
<service name="test">
<file name="/etc/file" filelist="afilllist"/>
<file name="/tmp/file" filelist="afilllist"/>
</service>
</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 doc="" multi="False" name="name" type="string">
<property>mandatory</property>
<value>/etc/file</value>
<value>/tmp/file</value>
</variable>
<variable doc="" multi="False" name="owner" type="string">
<property>mandatory</property>
@ -32,10 +32,6 @@
<property>mandatory</property>
<value>file</value>
</variable>
<variable doc="" multi="False" name="templating" type="boolean">
<property>mandatory</property>
<value>True</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean">
<property>mandatory</property>
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>

View File

@ -3,7 +3,7 @@
<services>
<service name="test">
<file name="/etc/file" filelist="afilllist"/>
<file name="/tmp/file" filelist="afilllist"/>
</service>
</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 doc="" multi="False" name="name" type="string">
<property>mandatory</property>
<value>/etc/file</value>
<value>/tmp/file</value>
</variable>
<variable doc="" multi="False" name="owner" type="string">
<property>mandatory</property>
@ -32,10 +32,6 @@
<property>mandatory</property>
<value>file</value>
</variable>
<variable doc="" multi="False" name="templating" type="boolean">
<property>mandatory</property>
<value>True</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean">
<property>mandatory</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>
<value>file1</value>
</variable>
<variable doc="" multi="False" name="templating" type="boolean">
<property>mandatory</property>
<value>True</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean">
<property>mandatory</property>
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>
@ -71,10 +67,6 @@
<property>mandatory</property>
<value>file2</value>
</variable>
<variable doc="" multi="False" name="templating" type="boolean">
<property>mandatory</property>
<value>True</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean">
<property>mandatory</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