Compare commits
6 Commits
pkg/dev/ri
...
5b4b43d5f4
Author | SHA1 | Date | |
---|---|---|---|
5b4b43d5f4 | |||
d47d1fde62 | |||
308e980bfd | |||
1cd8873e5b | |||
b0b44d4ee1 | |||
822483ab70 |
@ -1,5 +1,6 @@
|
|||||||
# 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
|
||||||
@ -113,7 +114,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']:
|
if elttype in ['name', 'index', 'method']:
|
||||||
continue
|
continue
|
||||||
family = self.objectspace.family()
|
family = self.objectspace.family()
|
||||||
family.name = elttype + 's'
|
family.name = elttype + 's'
|
||||||
@ -184,7 +185,10 @@ 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.append('family', subpath, 'services', creoleobj=family)
|
self.paths.add_family('services',
|
||||||
|
subpath,
|
||||||
|
family,
|
||||||
|
)
|
||||||
families.append(family)
|
families.append(family)
|
||||||
return families
|
return families
|
||||||
|
|
||||||
@ -230,11 +234,19 @@ class ServiceAnnotator:
|
|||||||
choices.append(choice)
|
choices.append(choice)
|
||||||
variable.choice = choices
|
variable.choice = choices
|
||||||
path = '{}.{}'.format(subpath, name)
|
path = '{}.{}'.format(subpath, name)
|
||||||
self.paths.append('variable', path, 'services', 'service', variable)
|
self.paths.add_variable('services',
|
||||||
|
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 file_.file_type == "UnicodeOption":
|
if not hasattr(file_, 'file_type') or 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'):
|
||||||
@ -327,7 +339,10 @@ 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.append('family', subpath, 'services', creoleobj=family)
|
self.paths.add_family('services',
|
||||||
|
subpath,
|
||||||
|
family,
|
||||||
|
)
|
||||||
families.append(family)
|
families.append(family)
|
||||||
return families
|
return families
|
||||||
|
|
||||||
@ -440,64 +455,108 @@ 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'):
|
if hasattr(self.space, 'constraints') and hasattr(self.space.constraints, 'group'):
|
||||||
if hasattr(self.space.constraints, 'group'):
|
for group in self.space.constraints.group:
|
||||||
for group in self.space.constraints.group:
|
leader_fullname = group.leader
|
||||||
leader_fullname = group.master
|
follower_names = list(group.follower.keys())
|
||||||
follower_names = list(group.slave.keys())
|
leader_family_name = self.paths.get_variable_family_name(leader_fullname)
|
||||||
leader_family_name = self.paths.get_variable_family_name(leader_fullname)
|
namespace = self.paths.get_variable_namespace(leader_fullname)
|
||||||
namespace = self.paths.get_variable_namespace(leader_fullname)
|
leader_name = self.paths.get_variable_name(leader_fullname)
|
||||||
leader_name = self.paths.get_variable_name(leader_fullname)
|
ori_leader_family = self.space.variables[namespace].family[leader_family_name]
|
||||||
leader_family = self.space.variables[namespace].family[leader_family_name]
|
has_a_leader = False
|
||||||
leader_path = namespace + '.' + leader_family_name
|
for variable in list(ori_leader_family.variable.values()):
|
||||||
is_leader = False
|
if isinstance(variable, self.objectspace.Leadership):
|
||||||
for variable in list(leader_family.variable.values()):
|
# append follower to an existed leadership
|
||||||
if isinstance(variable, self.objectspace.Leadership):
|
if variable.name == leader_name:
|
||||||
# append follower to an existed leadership
|
leader_space = variable
|
||||||
if variable.name == leader_name:
|
has_a_leader = True
|
||||||
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:
|
||||||
raise CreoleDictConsistencyError(_('cannot found followers {}').format(follower_names))
|
if has_a_leader:
|
||||||
del self.space.constraints.group
|
# 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 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'):
|
||||||
@ -1061,7 +1120,11 @@ 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 = self.paths.get_variable_path(param.text, namespace)
|
param.text, suffix = self.paths.get_variable_path(param.text,
|
||||||
|
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)
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
# Forked by:
|
# Forked by:
|
||||||
# Cadoles (http://www.cadoles.com)
|
# Cadoles (http://www.cadoles.com)
|
||||||
# Copyright (C) 2019
|
# Copyright (C) 2019-2020
|
||||||
|
|
||||||
# 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*)*) >
|
<!ELEMENT service ((port* | tcpwrapper* | ip* | interface* | package* | file* | digitalcertificate* | override*)*) >
|
||||||
<!ATTLIST service name CDATA #REQUIRED>
|
<!ATTLIST service name CDATA #REQUIRED>
|
||||||
<!ATTLIST service method (systemd|upstart|apache|network) "systemd">
|
<!ATTLIST service method (systemd|none) "systemd">
|
||||||
|
|
||||||
<!ELEMENT input (#PCDATA)>
|
<!ELEMENT input (#PCDATA)>
|
||||||
<!ELEMENT profile (#PCDATA)>
|
<!ELEMENT profile (#PCDATA)>
|
||||||
@ -109,6 +109,7 @@
|
|||||||
<!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 >
|
||||||
@ -118,6 +119,10 @@
|
|||||||
<!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>
|
||||||
@ -172,8 +177,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 (slave+)>
|
<!ELEMENT group (follower+)>
|
||||||
<!ATTLIST group master CDATA #REQUIRED>
|
<!ATTLIST group leader CDATA #REQUIRED>
|
||||||
<!ATTLIST group description CDATA #IMPLIED>
|
<!ATTLIST group description CDATA #IMPLIED>
|
||||||
|
|
||||||
<!ELEMENT param (#PCDATA)>
|
<!ELEMENT param (#PCDATA)>
|
||||||
@ -186,6 +191,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 slave (#PCDATA)>
|
<!ELEMENT follower (#PCDATA)>
|
||||||
|
|
||||||
<!ELEMENT help ((variable* | family*)*)>
|
<!ELEMENT help ((variable* | family*)*)>
|
||||||
|
@ -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, ParamValue, Calculation, calc_value,
|
Params, ParamSelfOption, ParamOption, ParamDynOption, ParamValue, Calculation, calc_value,
|
||||||
groups, owners)
|
groups, owners)
|
||||||
from tiramisu.error import ConfigError
|
from tiramisu.error import ConfigError
|
||||||
|
|
||||||
@ -385,18 +385,21 @@ 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 isinstance(value, list) and not is_follower:
|
if not is_follower:
|
||||||
value = [value]
|
if not isinstance(value, list):
|
||||||
self.attrib['default'].append(value)
|
dvalue = [value]
|
||||||
if 'default_multi' not in self.attrib and not is_leader:
|
else:
|
||||||
self.attrib['default_multi'] = value
|
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)
|
||||||
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:
|
||||||
@ -431,7 +434,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]
|
value = [param.text, transitive, param.attrib.get('suffix')]
|
||||||
elif param.attrib['type'] == 'number':
|
elif param.attrib['type'] == 'number':
|
||||||
value = int(param.text)
|
value = int(param.text)
|
||||||
else:
|
else:
|
||||||
@ -462,10 +465,21 @@ 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_value = ParamOption(self.storage.get(param[1][0]).get(), notraisepropertyerror=param[1][1], todict=True)
|
param_kwargs['todict'] = True
|
||||||
|
if not param[1][2]:
|
||||||
|
param_value = ParamOption(option,
|
||||||
|
**param_kwargs,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
param_value = ParamOption(self.storage.get(param[1][0]).get(), notraisepropertyerror=param[1][1])
|
family = '.'.join(param[1][0].split('.', 3)[:2])
|
||||||
|
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]:
|
||||||
|
@ -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 'slave', that shall be forced to the Redefinable type
|
# CreoleObjSpace's elements like 'family' or 'follower', that shall be forced to the Redefinable type
|
||||||
FORCE_REDEFINABLES = ('family', 'slave', 'service', 'disknod', 'variables', 'family_action')
|
FORCE_REDEFINABLES = ('family', 'follower', '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,7 +194,12 @@ 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.append('variable', name, namespace, family.name, variable_obj)
|
self.paths.add_variable(namespace,
|
||||||
|
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
|
||||||
@ -419,14 +424,23 @@ 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, 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
|
"""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.append('variable', child.attrib['name'], namespace, family_name,
|
self.paths.add_variable(namespace,
|
||||||
creoleobj)
|
child.attrib['name'],
|
||||||
|
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'])
|
||||||
@ -438,7 +452,10 @@ 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.append('family', family_name, namespace, creoleobj=creoleobj)
|
self.paths.add_family(namespace,
|
||||||
|
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):
|
||||||
@ -575,7 +592,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(object):
|
class Path:
|
||||||
"""Helper class to handle the `path` attribute of a CreoleObjSpace
|
"""Helper class to handle the `path` attribute of a CreoleObjSpace
|
||||||
instance.
|
instance.
|
||||||
|
|
||||||
@ -585,28 +602,27 @@ class Path(object):
|
|||||||
self.variables = {}
|
self.variables = {}
|
||||||
self.families = {}
|
self.families = {}
|
||||||
|
|
||||||
def append(self, pathtype, name, namespace, family=None, creoleobj=None): # pylint: disable=C0111
|
# Family
|
||||||
if pathtype == 'family':
|
def add_family(self,
|
||||||
self.families[name] = dict(name=name, namespace=namespace, creoleobj=creoleobj)
|
namespace: str,
|
||||||
elif pathtype == 'variable':
|
name: str,
|
||||||
if namespace == 'creole':
|
creoleobj: str,
|
||||||
varname = name
|
) -> str: # pylint: disable=C0111
|
||||||
else:
|
self.families[name] = dict(name=name,
|
||||||
if '.' in name:
|
namespace=namespace,
|
||||||
varname = name
|
creoleobj=creoleobj,
|
||||||
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, current_namespace): # pylint: disable=C0111
|
def get_family_path(self,
|
||||||
|
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(
|
||||||
@ -616,81 +632,147 @@ class Path(object):
|
|||||||
path = '.'.join([dico['namespace'], path])
|
path = '.'.join([dico['namespace'], path])
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def get_family_namespace(self, name): # pylint: disable=C0111
|
def get_family_namespace(self,
|
||||||
|
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, name): # pylint: disable=C0111
|
def get_family_obj(self,
|
||||||
|
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']
|
||||||
|
|
||||||
def get_variable_name(self, name): # pylint: disable=C0111
|
# 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
|
||||||
dico = self._get_variable(name)
|
dico = self._get_variable(name)
|
||||||
return dico['name']
|
if dico['leader'] != None:
|
||||||
|
raise CreoleDictConsistencyError(_('Already defined leader {} for variable'
|
||||||
|
' {}'.format(dico['leader'], name)))
|
||||||
|
dico['leader'] = leader_name
|
||||||
|
|
||||||
def get_variable_obj(self, name): # pylint: disable=C0111
|
def get_leader(self, name): # pylint: disable=C0111
|
||||||
dico = self._get_variable(name)
|
return self._get_variable(name)['leader']
|
||||||
return dico['creoleobj']
|
|
||||||
|
|
||||||
def get_variable_family_name(self, name): # pylint: disable=C0111
|
# Variable
|
||||||
dico = self._get_variable(name)
|
def add_variable(self,
|
||||||
return dico['family']
|
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_path(self, name): # pylint: disable=C0111
|
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
|
||||||
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, name): # pylint: disable=C0111
|
def get_variable_namespace(self,
|
||||||
|
name: str,
|
||||||
|
) -> str: # pylint: disable=C0111
|
||||||
return self._get_variable(name)['namespace']
|
return self._get_variable(name)['namespace']
|
||||||
|
|
||||||
def get_variable_path(self, name, current_namespace, allow_source=False): # pylint: disable=C0111
|
def get_variable_path(self,
|
||||||
|
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')
|
||||||
dico = self._get_variable(name)
|
if with_suffix:
|
||||||
|
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']:
|
||||||
return dico['name']
|
value = dico['name']
|
||||||
list_path = [dico['namespace'], dico['family']]
|
else:
|
||||||
if dico['leader'] is not None:
|
list_path = [dico['namespace'], dico['family']]
|
||||||
list_path.append(dico['leader'])
|
if dico['leader'] is not None:
|
||||||
list_path.append(dico['name'])
|
list_path.append(dico['leader'])
|
||||||
return '.'.join(list_path)
|
list_path.append(dico['name'])
|
||||||
|
value = '.'.join(list_path)
|
||||||
|
if with_suffix:
|
||||||
|
return value, suffix
|
||||||
|
return value
|
||||||
|
|
||||||
def path_is_defined(self, name): # pylint: disable=C0111
|
def path_is_defined(self,
|
||||||
|
name: str,
|
||||||
|
) -> str: # pylint: disable=C0111
|
||||||
return name in self.variables
|
return name in self.variables
|
||||||
|
|
||||||
def set_leader(self, name, leader): # pylint: disable=C0111
|
def _get_variable(self,
|
||||||
dico = self._get_variable(name)
|
name: str,
|
||||||
namespace = dico['namespace']
|
with_suffix: bool=False,
|
||||||
if dico['leader'] != None:
|
) -> str:
|
||||||
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']
|
|
||||||
|
@ -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 master.slave")
|
msg = _("Group variables must be of type leader.follower")
|
||||||
raise KeyError(msg)
|
raise KeyError(msg)
|
||||||
master, slave = splitted_var
|
leader, follower = splitted_var
|
||||||
if master in self.context:
|
if leader in self.context:
|
||||||
return slave in self.context[master].slave.keys()
|
return follower in self.context[leader].follower.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, slave=None, index=None):
|
def __init__(self, value, follower=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 slave is not None:
|
if follower is not None:
|
||||||
self.slave = slave
|
self.follower = follower
|
||||||
else:
|
else:
|
||||||
self.slave = {}
|
self.follower = {}
|
||||||
self._index = index
|
self._index = index
|
||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
"""Get slave variable or attribute of master value.
|
"""Get follower variable or attribute of leader value.
|
||||||
|
|
||||||
If the attribute is a name of a slave variable, return its value.
|
If the attribute is a name of a follower variable, return its value.
|
||||||
Otherwise, returns the requested attribute of master value.
|
Otherwise, returns the requested attribute of leader value.
|
||||||
"""
|
"""
|
||||||
if name in self.slave:
|
if name in self.follower:
|
||||||
value = self.slave[name]
|
value = self.follower[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 master.slave at requested index.
|
"""Get a leader.follower at requested index.
|
||||||
"""
|
"""
|
||||||
ret = {}
|
ret = {}
|
||||||
for key, values in self.slave.items():
|
for key, values in self.follower.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 master.slave.
|
"""Iterate over leader.follower.
|
||||||
|
|
||||||
Return synchronised value of master.slave.
|
Return synchronised value of leader.follower.
|
||||||
"""
|
"""
|
||||||
for i in range(len(self._value)):
|
for i in range(len(self._value)):
|
||||||
ret = {}
|
ret = {}
|
||||||
for key, values in self.slave.items():
|
for key, values in self.follower.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 master value
|
"""Delegate to leader value
|
||||||
"""
|
"""
|
||||||
return len(self._value)
|
return len(self._value)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
"""Show CreoleLeader as dictionary.
|
"""Show CreoleLeader as dictionary.
|
||||||
|
|
||||||
The master value is stored under 'value' key.
|
The leader value is stored under 'value' key.
|
||||||
The slaves are stored under 'slave' key.
|
The followers are stored under 'follower' key.
|
||||||
"""
|
"""
|
||||||
return repr({'value': self._value, 'slave': self.slave})
|
return repr({'value': self._value, 'follower': self.follower})
|
||||||
|
|
||||||
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 master value
|
"""Delegate to leader 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_slave(self, config, name, path):
|
async def add_follower(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.slave[name] = values
|
self.follower[name] = values
|
||||||
|
|
||||||
|
|
||||||
class CreoleExtra:
|
class CreoleExtra:
|
||||||
@ -261,11 +261,14 @@ class CreoleTemplateEngine:
|
|||||||
eosfunc_file: str,
|
eosfunc_file: str,
|
||||||
distrib_dir: str,
|
distrib_dir: str,
|
||||||
tmp_dir: str,
|
tmp_dir: str,
|
||||||
dest_dir:str) -> None:
|
dest_dir: str,
|
||||||
|
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)
|
||||||
@ -285,7 +288,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_slave(self.config,
|
await leader.add_follower(self.config,
|
||||||
await suboption.option.name(),
|
await suboption.option.name(),
|
||||||
await suboption.option.path())
|
await suboption.option.path())
|
||||||
else:
|
else:
|
||||||
@ -306,7 +309,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_slave(self.config,
|
await leader.add_follower(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
|
||||||
@ -342,6 +345,7 @@ 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):
|
||||||
@ -350,8 +354,7 @@ 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(join(self.tmp_dir,
|
cheetah_template = CheetahTemplate(source,
|
||||||
filevar['source']),
|
|
||||||
self.creole_variables_dict,
|
self.creole_variables_dict,
|
||||||
self.eosfunc,
|
self.eosfunc,
|
||||||
destfilename,
|
destfilename,
|
||||||
@ -368,19 +371,24 @@ class CreoleTemplateEngine:
|
|||||||
|
|
||||||
def instance_file(self,
|
def instance_file(self,
|
||||||
filevar: Dict,
|
filevar: Dict,
|
||||||
systemd_rights: list) -> None:
|
systemd_rights: list,
|
||||||
|
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 not isinstance(filenames, list):
|
if override:
|
||||||
filenames = [filenames]
|
filenames = [f'/system/{service_name}.service.d/rougail.conf']
|
||||||
if variable:
|
else:
|
||||||
variable = [variable]
|
filenames = filevar['name']
|
||||||
|
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:])
|
||||||
@ -389,11 +397,17 @@ class CreoleTemplateEngine:
|
|||||||
var = variable[idx]
|
var = variable[idx]
|
||||||
else:
|
else:
|
||||||
var = None
|
var = None
|
||||||
self.process(destfilename,
|
source = join(self.tmp_dir, filevar['source'])
|
||||||
filevar,
|
if filevar['templating']:
|
||||||
var)
|
self.process(source,
|
||||||
systemd_rights.append(f'C {filename} {filevar["mode"]} {filevar["owner"]} {filevar["group"]} - -')
|
destfilename,
|
||||||
systemd_rights.append(f'z {filename} - - - - -')
|
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} - - - - -')
|
||||||
|
|
||||||
async def instance_files(self) -> None:
|
async def instance_files(self) -> None:
|
||||||
"""Run templatisation on all files
|
"""Run templatisation on all files
|
||||||
@ -411,33 +425,41 @@ 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() == 'files':
|
if await fills.option.name() in ['files', 'overrides']:
|
||||||
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."))
|
||||||
if fill.get('activate', False):
|
override = await fills.option.name() == 'overrides'
|
||||||
|
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"))
|
||||||
|
|
||||||
with open(join(self.dest_dir, 'rougail.conf'), 'w') as fh:
|
if self.tmpfile_name:
|
||||||
fh.write('\n'.join(systemd_rights))
|
with open(self.tmpfile_name, 'w') as fh:
|
||||||
fh.write('\n')
|
fh.write('\n'.join(systemd_rights))
|
||||||
|
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) -> None:
|
dest_dir: str,
|
||||||
|
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()
|
||||||
|
34
tests/flattener_dicos/10leadership_append/00-base.xml
Normal file
34
tests/flattener_dicos/10leadership_append/00-base.xml
Normal 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="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>
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general1">
|
<family name="general1">
|
||||||
<variable name="slave3" type="string" description="slave3" multi="True"/>
|
<variable name="follower3" type="string" description="follower3" multi="True"/>
|
||||||
</family>
|
</family>
|
||||||
</variables>
|
</variables>
|
||||||
|
|
||||||
<constraints>
|
<constraints>
|
||||||
<group master="master">
|
<group leader="leader">
|
||||||
<slave>slave3</slave>
|
<follower>follower3</follower>
|
||||||
</group>
|
</group>
|
||||||
</constraints>
|
</constraints>
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": [], "creole.general1.leader.follower3": []}
|
@ -13,22 +13,22 @@
|
|||||||
</family>
|
</family>
|
||||||
<family doc="general1" name="general1">
|
<family doc="general1" name="general1">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general1.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave3" multi="True" name="slave3" type="string">
|
<variable doc="follower3" multi="True" name="follower3" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
37
tests/flattener_dicos/10leadership_auto/00-base.xml
Normal file
37
tests/flattener_dicos/10leadership_auto/00-base.xml
Normal 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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": []}
|
@ -10,10 +10,10 @@
|
|||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value type="string">non</value>
|
<value type="string">non</value>
|
||||||
</variable>
|
</variable>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave3" multi="True" name="slave3" type="string">
|
<variable doc="follower3" multi="True" name="follower3" 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.master.master</param>
|
<param transitive="False" type="variable">creole.general.leader.leader</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
32
tests/flattener_dicos/10leadership_autoleader/00-base.xml
Normal file
32
tests/flattener_dicos/10leadership_autoleader/00-base.xml
Normal 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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": []}
|
@ -10,10 +10,10 @@
|
|||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value type="string">non</value>
|
<value type="string">non</value>
|
||||||
</variable>
|
</variable>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.master</param>
|
<param transitive="False" type="variable">creole.general.leader.leader</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -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="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>
|
@ -11,22 +11,22 @@
|
|||||||
<value type="string">non</value>
|
<value type="string">non</value>
|
||||||
</variable>
|
</variable>
|
||||||
</family>
|
</family>
|
||||||
<family doc="mastermode" name="mastermode">
|
<family doc="leadermode" name="leadermode">
|
||||||
<property>expert</property>
|
<property>expert</property>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>hidden</property>
|
<property>hidden</property>
|
||||||
<property>expert</property>
|
<property>expert</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string">
|
<variable doc="leader" multi="True" name="leader" 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="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" type="string">
|
||||||
<property>expert</property>
|
<property>expert</property>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" type="string">
|
||||||
<property>expert</property>
|
<property>expert</property>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}
|
@ -10,19 +10,19 @@
|
|||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value type="string">non</value>
|
<value type="string">non</value>
|
||||||
</variable>
|
</variable>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
32
tests/flattener_dicos/10leadership_familyaccent/00-base.xml
Normal file
32
tests/flattener_dicos/10leadership_familyaccent/00-base.xml
Normal 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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}
|
@ -10,19 +10,19 @@
|
|||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value type="string">non</value>
|
<value type="string">non</value>
|
||||||
</variable>
|
</variable>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}
|
@ -10,21 +10,21 @@
|
|||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value type="string">non</value>
|
<value type="string">non</value>
|
||||||
</variable>
|
</variable>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>basic</property>
|
<property>basic</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string">
|
<variable doc="leader" multi="True" name="leader" type="string">
|
||||||
<property>mandatory</property>
|
<property>mandatory</property>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
32
tests/flattener_dicos/10leadership_mandatory/00-base.xml
Normal file
32
tests/flattener_dicos/10leadership_mandatory/00-base.xml
Normal 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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}
|
@ -10,20 +10,20 @@
|
|||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value type="string">non</value>
|
<value type="string">non</value>
|
||||||
</variable>
|
</variable>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -13,8 +13,8 @@
|
|||||||
</variables>
|
</variables>
|
||||||
|
|
||||||
<constraints>
|
<constraints>
|
||||||
<group master="nut_monitor_netmask">
|
<group leader="nut_monitor_netmask">
|
||||||
<slave>nut_monitor_host</slave>
|
<follower>nut_monitor_host</follower>
|
||||||
</group>
|
</group>
|
||||||
</constraints>
|
</constraints>
|
||||||
|
|
41
tests/flattener_dicos/10leadership_multi/00-base.xml
Normal file
41
tests/flattener_dicos/10leadership_multi/00-base.xml
Normal 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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"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": []}
|
@ -13,29 +13,29 @@
|
|||||||
</family>
|
</family>
|
||||||
<family doc="general1" name="general1">
|
<family doc="general1" name="general1">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general1.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
||||||
<leader doc="master" name="master1">
|
<leader doc="leader" name="leader1">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master1" type="string"/>
|
<variable doc="leader" multi="True" name="leader1" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave11" type="string">
|
<variable doc="follower1" multi="True" name="follower11" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave2" multi="True" name="slave21" type="string">
|
<variable doc="follower2" multi="True" name="follower21" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
34
tests/flattener_dicos/10load_leadership/00-base.xml
Normal file
34
tests/flattener_dicos/10load_leadership/00-base.xml
Normal 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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": []}
|
@ -13,19 +13,19 @@
|
|||||||
</family>
|
</family>
|
||||||
<family doc="general1" name="general1">
|
<family doc="general1" name="general1">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general1.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}
|
@ -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="master" multi="True" name="mode_conteneur_actif" type="choice">
|
<variable doc="leader" 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="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" type="string">
|
||||||
<property>mandatory</property>
|
<property>mandatory</property>
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value>value</value>
|
<value>value</value>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -0,0 +1,33 @@
|
|||||||
|
<?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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.leader.leader": ["leader"], "creole.general.leader.follower1": [["value"]], "creole.general.leader.follower2": [["value1", "value2"]]}
|
@ -0,0 +1,33 @@
|
|||||||
|
<?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>
|
@ -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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.leader.leader": ["value"], "creole.general.leader.follower1": [null], "creole.general.leader.follower2": [null]}
|
@ -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="master" multi="True" name="mode_conteneur_actif" type="choice">
|
<variable doc="leader" 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="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string">
|
<variable doc="leader" multi="True" name="leader" type="string">
|
||||||
<property>mandatory</property>
|
<property>mandatory</property>
|
||||||
<value>value</value>
|
<value>value</value>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -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='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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": []}
|
@ -0,0 +1,34 @@
|
|||||||
|
<?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>
|
@ -10,16 +10,16 @@
|
|||||||
</variable>
|
</variable>
|
||||||
</family>
|
</family>
|
||||||
<family name="general-1">
|
<family name="general-1">
|
||||||
<variable name="master" type="string" description="master" multi="True"/>
|
<variable name="leader" type="string" description="leader" multi="True"/>
|
||||||
<variable name="slave1" type="string" description="slave1" multi="True"/>
|
<variable name="follower1" type="string" description="follower1" multi="True"/>
|
||||||
<variable name="slave2" type="string" description="slave2" multi="True"/>
|
<variable name="follower2" type="string" description="follower2" multi="True"/>
|
||||||
</family>
|
</family>
|
||||||
</variables>
|
</variables>
|
||||||
|
|
||||||
<constraints>
|
<constraints>
|
||||||
<group master="master">
|
<group leader="leader">
|
||||||
<slave>slave1</slave>
|
<follower>follower1</follower>
|
||||||
<slave>slave2</slave>
|
<follower>follower2</follower>
|
||||||
</group>
|
</group>
|
||||||
</constraints>
|
</constraints>
|
||||||
|
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general-1">
|
<family name="general-1">
|
||||||
<variable name="master" redefine="True" mandatory="True"/>
|
<variable name="leader" redefine="True" mandatory="True"/>
|
||||||
</family>
|
</family>
|
||||||
</variables>
|
</variables>
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general_1.leader.leader": [], "creole.general_1.leader.follower1": [], "creole.general_1.leader.follower2": []}
|
@ -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="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>basic</property>
|
<property>basic</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string">
|
<variable doc="leader" multi="True" name="leader" type="string">
|
||||||
<property>mandatory</property>
|
<property>mandatory</property>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
34
tests/flattener_dicos/10load_leadership_submulti/00-base.xml
Normal file
34
tests/flattener_dicos/10load_leadership_submulti/00-base.xml
Normal 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="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>
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general1.leader.leader": [], "creole.general1.leader.follower1": [], "creole.general1.leader.follower2": []}
|
@ -13,19 +13,19 @@
|
|||||||
</family>
|
</family>
|
||||||
<family doc="general1" name="general1">
|
<family doc="general1" name="general1">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<leader doc="other description" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="string">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="submulti" name="follower2" 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.master.slave1</param>
|
<param transitive="False" type="variable">creole.general1.leader.follower1</param>
|
||||||
</value>
|
</value>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general1.master.master": [], "creole.general1.master.slave1": [], "creole.general1.master.slave2": []}
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": ["non"], "creole.general.master.master": ["value"], "creole.general.master.slave1": [null], "creole.general.master.slave2": [null]}
|
|
@ -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='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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general1.master.master": [], "creole.general1.master.slave1": [], "creole.general1.master.slave2": []}
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general_1.master.master": [], "creole.general_1.master.slave1": [], "creole.general_1.master.slave2": []}
|
|
23
tests/flattener_dicos/10load_submulti_two_value/00-base.xml
Normal file
23
tests/flattener_dicos/10load_submulti_two_value/00-base.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?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
|
||||||
|
-->
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": [["non"], ["oui"]]}
|
@ -0,0 +1,17 @@
|
|||||||
|
<?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>
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"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": []}
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general1.master.master": [], "creole.general1.master.slave1": [], "creole.general1.master.slave2": [], "creole.general1.master.slave3": []}
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": []}
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": []}
|
|
@ -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="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>
|
|
@ -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="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>
|
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}
|
|
@ -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="master" type="string" description="master" multi="True"/>
|
<variable name="leader" type="string" description="leader" multi="True"/>
|
||||||
<variable name="slave1" type="string" description="slave1" multi="True"/>
|
<variable name="follower1" type="string" description="follower1" multi="True"/>
|
||||||
<variable name="slave2" type="string" description="slave2" multi="True"/>
|
<variable name="follower2" type="string" description="follower2" multi="True"/>
|
||||||
</family>
|
</family>
|
||||||
<separators/>
|
<separators/>
|
||||||
</variables>
|
</variables>
|
||||||
|
|
||||||
<constraints>
|
<constraints>
|
||||||
<check name="valid_enum" target="slave1">
|
<check name="valid_enum" target="follower1">
|
||||||
<param>['a','b','c']</param>
|
<param>['a','b','c']</param>
|
||||||
</check>
|
</check>
|
||||||
<group master="master">
|
<group leader="leader">
|
||||||
<slave>slave1</slave>
|
<follower>follower1</follower>
|
||||||
<slave>slave2</slave>
|
<follower>follower2</follower>
|
||||||
</group>
|
</group>
|
||||||
</constraints>
|
</constraints>
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
{"creole.general.mode_conteneur_actif": "non", "creole.general.leader.leader": [], "creole.general.leader.follower1": [], "creole.general.leader.follower2": []}
|
@ -10,10 +10,10 @@
|
|||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value type="string">non</value>
|
<value type="string">non</value>
|
||||||
</variable>
|
</variable>
|
||||||
<leader doc="master" name="master">
|
<leader doc="leader" name="leader">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="master" multi="True" name="master" type="string"/>
|
<variable doc="leader" multi="True" name="leader" type="string"/>
|
||||||
<variable doc="slave1" multi="True" name="slave1" type="choice">
|
<variable doc="follower1" multi="True" name="follower1" 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="slave2" multi="True" name="slave2" type="string">
|
<variable doc="follower2" multi="True" name="follower2" type="string">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
</variable>
|
</variable>
|
||||||
</leader>
|
</leader>
|
@ -1 +0,0 @@
|
|||||||
{"creole.general.mode_conteneur_actif": "non", "creole.general.master.master": [], "creole.general.master.slave1": [], "creole.general.master.slave2": []}
|
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<services>
|
<services>
|
||||||
<service name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file" filelist="afilllist"/>
|
<file name="/etc/file" filelist="afilllist"/>
|
||||||
</service>
|
</service>
|
||||||
</services>
|
</services>
|
||||||
|
|
||||||
|
@ -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/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}
|
{"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}
|
||||||
|
@ -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>/tmp/file</value>
|
<value>/etc/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,6 +32,10 @@
|
|||||||
<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>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<services>
|
<services>
|
||||||
<service name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file" filelist="afilllist"/>
|
<file name="/etc/file" filelist="afilllist"/>
|
||||||
</service>
|
</service>
|
||||||
</services>
|
</services>
|
||||||
|
|
||||||
|
@ -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": "/tmp/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file"}
|
{"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}
|
||||||
|
@ -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>/tmp/file</value>
|
<value>/etc/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,6 +32,10 @@
|
|||||||
<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>
|
||||||
|
@ -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.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}
|
{"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}
|
||||||
|
@ -32,6 +32,10 @@
|
|||||||
<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>
|
||||||
@ -67,6 +71,10 @@
|
|||||||
<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>
|
||||||
|
@ -1 +1 @@
|
|||||||
{"creole.general.condition": "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"}
|
{"creole.general.condition": "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.templating": true}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user