containers => services
This commit is contained in:
parent
963e93295a
commit
25d5307415
415 changed files with 749 additions and 2090 deletions
|
@ -37,7 +37,7 @@
|
||||||
<!-- root element -->
|
<!-- root element -->
|
||||||
<!-- =============== -->
|
<!-- =============== -->
|
||||||
|
|
||||||
<!ELEMENT creole (containers | family_action | variables | constraints | help)*>
|
<!ELEMENT creole (services | family_action | variables | constraints | help)*>
|
||||||
|
|
||||||
<!-- ============== -->
|
<!-- ============== -->
|
||||||
<!-- files element -->
|
<!-- files element -->
|
||||||
|
@ -64,19 +64,11 @@
|
||||||
<!-- for form action -->
|
<!-- for form action -->
|
||||||
<!ATTLIST action save (True|False) "False">
|
<!ATTLIST action save (True|False) "False">
|
||||||
|
|
||||||
<!ELEMENT containers ((container* | all*)*)>
|
<!ELEMENT services (service*)>
|
||||||
|
|
||||||
<!ELEMENT container ((service* | service_access* | service_restriction* | interface* | package* | file* | disknod* | host* | fstab*)*) >
|
<!ELEMENT service ((port* | tcpwrapper* | ip* | interface* | package* | file*)*) >
|
||||||
<!ATTLIST container name CDATA #REQUIRED >
|
<!ATTLIST service name CDATA #REQUIRED>
|
||||||
<!ATTLIST container id CDATA #IMPLIED >
|
|
||||||
<!ATTLIST container group CDATA #IMPLIED >
|
|
||||||
|
|
||||||
<!ELEMENT all ((service* | interface* | package* | file* | disknod* | host* | fstab*)*) >
|
|
||||||
|
|
||||||
<!ELEMENT service (#PCDATA)>
|
|
||||||
<!ATTLIST service servicelist CDATA #IMPLIED >
|
|
||||||
<!ATTLIST service method (systemd|upstart|apache|network) "systemd">
|
<!ATTLIST service method (systemd|upstart|apache|network) "systemd">
|
||||||
<!ATTLIST service redefine (True|False) "False">
|
|
||||||
|
|
||||||
<!ELEMENT input (#PCDATA)>
|
<!ELEMENT input (#PCDATA)>
|
||||||
<!ELEMENT profile (#PCDATA)>
|
<!ELEMENT profile (#PCDATA)>
|
||||||
|
@ -84,9 +76,6 @@
|
||||||
<!ELEMENT tag (#PCDATA)>
|
<!ELEMENT tag (#PCDATA)>
|
||||||
<!ELEMENT saltaction (#PCDATA)>
|
<!ELEMENT saltaction (#PCDATA)>
|
||||||
|
|
||||||
<!ELEMENT service_access ((port | tcpwrapper)*)>
|
|
||||||
<!ATTLIST service_access service CDATA #REQUIRED >
|
|
||||||
|
|
||||||
<!ELEMENT port (#PCDATA)>
|
<!ELEMENT port (#PCDATA)>
|
||||||
<!ATTLIST port port_type (PortOption|SymLinkOption|variable) "PortOption">
|
<!ATTLIST port port_type (PortOption|SymLinkOption|variable) "PortOption">
|
||||||
<!ATTLIST port service_accesslist CDATA #IMPLIED >
|
<!ATTLIST port service_accesslist CDATA #IMPLIED >
|
||||||
|
@ -96,9 +85,6 @@
|
||||||
<!ATTLIST tcpwrapper tcpwrapper_type (UnicodeOption|SymLinkOption|variable) "UnicodeOption">
|
<!ATTLIST tcpwrapper tcpwrapper_type (UnicodeOption|SymLinkOption|variable) "UnicodeOption">
|
||||||
<!ATTLIST tcpwrapper service_accesslist CDATA #IMPLIED >
|
<!ATTLIST tcpwrapper service_accesslist CDATA #IMPLIED >
|
||||||
|
|
||||||
<!ELEMENT service_restriction (ip*)>
|
|
||||||
<!ATTLIST service_restriction service CDATA #REQUIRED >
|
|
||||||
|
|
||||||
<!ELEMENT ip (#PCDATA)>
|
<!ELEMENT ip (#PCDATA)>
|
||||||
<!ATTLIST ip service_restrictionlist CDATA #IMPLIED >
|
<!ATTLIST ip service_restrictionlist CDATA #IMPLIED >
|
||||||
<!ATTLIST ip ip_type (NetworkOption|SymLinkOption|variable) "NetworkOption">
|
<!ATTLIST ip ip_type (NetworkOption|SymLinkOption|variable) "NetworkOption">
|
||||||
|
@ -121,34 +107,12 @@
|
||||||
<!ATTLIST interface method (bridge|macvlan) "macvlan" >
|
<!ATTLIST interface method (bridge|macvlan) "macvlan" >
|
||||||
<!ATTLIST interface redefine (True|False) "False">
|
<!ATTLIST interface redefine (True|False) "False">
|
||||||
|
|
||||||
<!ELEMENT host EMPTY >
|
|
||||||
<!ATTLIST host hostlist CDATA #IMPLIED >
|
|
||||||
<!ATTLIST host name CDATA #REQUIRED >
|
|
||||||
<!ATTLIST host name_type (SymLinkOption|variable) "variable">
|
|
||||||
<!ATTLIST host ip CDATA #REQUIRED >
|
|
||||||
<!ATTLIST host ip_type (SymLinkOption|variable) "variable">
|
|
||||||
<!ATTLIST host crossed (True|False) "True" >
|
|
||||||
<!ATTLIST host comment CDATA #IMPLIED >
|
|
||||||
|
|
||||||
<!ELEMENT fstab EMPTY >
|
|
||||||
<!ATTLIST fstab name CDATA #REQUIRED>
|
|
||||||
<!ATTLIST fstab name_type (FilenameOption|SymLinkOption|variable) "FilenameOption">
|
|
||||||
<!ATTLIST fstab type (bind|normal) "bind">
|
|
||||||
<!ATTLIST fstab fstype (auto|ext3|ext4|nfs|smb) "auto">
|
|
||||||
<!ATTLIST fstab mount_point CDATA #IMPLIED>
|
|
||||||
<!ATTLIST fstab mount_point_type (FilenameOption|SymLinkOption|variable) "FilenameOption">
|
|
||||||
<!ATTLIST fstab options CDATA #IMPLIED>
|
|
||||||
<!ATTLIST fstab checks CDATA #IMPLIED>
|
|
||||||
<!ATTLIST fstab fstablist CDATA #IMPLIED>
|
|
||||||
|
|
||||||
<!ELEMENT package (#PCDATA)>
|
<!ELEMENT package (#PCDATA)>
|
||||||
<!ATTLIST package packagelist CDATA #IMPLIED>
|
<!ATTLIST package packagelist CDATA #IMPLIED>
|
||||||
|
|
||||||
<!ELEMENT disknod (#PCDATA)>
|
|
||||||
|
|
||||||
<!ELEMENT file EMPTY>
|
<!ELEMENT file EMPTY>
|
||||||
<!ATTLIST file name CDATA #REQUIRED >
|
<!ATTLIST file name CDATA #REQUIRED >
|
||||||
<!ATTLIST file name_type (UnicodeOption|SymLinkOption|variable) "UnicodeOption">
|
<!ATTLIST file file_type (UnicodeOption|SymLinkOption|variable) "UnicodeOption">
|
||||||
<!ATTLIST file variable CDATA #IMPLIED>
|
<!ATTLIST file variable CDATA #IMPLIED>
|
||||||
<!ATTLIST file variable_type (variable) "variable">
|
<!ATTLIST file variable_type (variable) "variable">
|
||||||
<!ATTLIST file source CDATA #IMPLIED>
|
<!ATTLIST file source CDATA #IMPLIED>
|
||||||
|
@ -219,7 +183,7 @@
|
||||||
<!ATTLIST group description CDATA #IMPLIED>
|
<!ATTLIST group description CDATA #IMPLIED>
|
||||||
|
|
||||||
<!ELEMENT param (#PCDATA)>
|
<!ELEMENT param (#PCDATA)>
|
||||||
<!ATTLIST param type (string|eole|variable|number|container|context|python) "string">
|
<!ATTLIST param type (string|eole|variable|number|python) "string">
|
||||||
<!ATTLIST param name CDATA #IMPLIED>
|
<!ATTLIST param name CDATA #IMPLIED>
|
||||||
<!ATTLIST param hidden (True|False) "True">
|
<!ATTLIST param hidden (True|False) "True">
|
||||||
<!ATTLIST param optional (True|False) "False">
|
<!ATTLIST param optional (True|False) "False">
|
||||||
|
|
|
@ -56,8 +56,6 @@ ERASED_ATTRIBUTES = ('redefine', 'exists', 'fallback', 'optional', 'remove_check
|
||||||
'level', 'submulti') # , '_real_container')
|
'level', 'submulti') # , '_real_container')
|
||||||
ERASED_CONTAINER_ATTRIBUTES = ('id', 'container', 'group_id', 'group', 'container_group')
|
ERASED_CONTAINER_ATTRIBUTES = ('id', 'container', 'group_id', 'group', 'container_group')
|
||||||
|
|
||||||
NOT_NEED_ACTIVATE = ('disknod',)
|
|
||||||
|
|
||||||
FORCE_CHOICE = {'oui/non': ['oui', 'non'],
|
FORCE_CHOICE = {'oui/non': ['oui', 'non'],
|
||||||
'on/off': ['on', 'off'],
|
'on/off': ['on', 'off'],
|
||||||
'yes/no': ['yes', 'no'],
|
'yes/no': ['yes', 'no'],
|
||||||
|
@ -77,16 +75,13 @@ TYPE_PARAM_CHECK = ('string', 'python', 'eole', 'variable')
|
||||||
TYPE_PARAM_CONDITION = ('string', 'python', 'number', 'eole', 'variable')
|
TYPE_PARAM_CONDITION = ('string', 'python', 'number', 'eole', 'variable')
|
||||||
TYPE_PARAM_FILL = ('string', 'eole', 'number', 'context', 'variable')
|
TYPE_PARAM_FILL = ('string', 'eole', 'number', 'context', 'variable')
|
||||||
|
|
||||||
DISKNOD_KEY_TYPE = {'major': 'number',
|
|
||||||
'minor': 'number'}
|
|
||||||
|
|
||||||
ERASED_FAMILY_ACTION_ATTRIBUTES = ('index', 'action')
|
ERASED_FAMILY_ACTION_ATTRIBUTES = ('index', 'action')
|
||||||
|
|
||||||
FREEZE_AUTOFREEZE_VARIABLE = 'module_instancie'
|
FREEZE_AUTOFREEZE_VARIABLE = 'module_instancie'
|
||||||
|
|
||||||
|
|
||||||
class ContainerAnnotator:
|
class ServiceAnnotator:
|
||||||
"""Manage container's object
|
"""Manage service's object
|
||||||
"""
|
"""
|
||||||
def __init__(self, objectspace):
|
def __init__(self, objectspace):
|
||||||
self.space = objectspace.space
|
self.space = objectspace.space
|
||||||
|
@ -99,79 +94,104 @@ class ContainerAnnotator:
|
||||||
</service_access>
|
</service_access>
|
||||||
"""
|
"""
|
||||||
self.grouplist_conditions = {}
|
self.grouplist_conditions = {}
|
||||||
self.convert_containers()
|
self.convert_services()
|
||||||
|
|
||||||
def convert_containers(self):
|
def convert_services(self):
|
||||||
if hasattr(self.space, 'containers'):
|
if hasattr(self.space, 'services'):
|
||||||
if hasattr(self.space.containers, 'container'):
|
if hasattr(self.space.services, 'service'):
|
||||||
self.convert_all()
|
|
||||||
subelts = dict()
|
subelts = dict()
|
||||||
# self.space.containers.containers = self.objectspace.containers()
|
for idx, service in enumerate(self.space.services.service.values()):
|
||||||
for idx, container in enumerate(self.space.containers.container.values()):
|
|
||||||
family = self.objectspace.family()
|
family = self.objectspace.family()
|
||||||
family.name = 'container{}'.format(idx)
|
family.name = 'service{}'.format(idx)
|
||||||
family.doc = container.name
|
family.doc = service.name
|
||||||
family.family = OrderedDict()
|
family.family = OrderedDict()
|
||||||
self.convert_container_to_family(family.name, family.family, container)
|
self.convert_service_to_family(family.name, family.family, service)
|
||||||
setattr(self.space.containers, family.name, family)
|
setattr(self.space.services, family.name, family)
|
||||||
del self.space.containers.container
|
del self.space.services.service
|
||||||
else:
|
else:
|
||||||
del self.space.containers
|
del self.space.services
|
||||||
|
|
||||||
def convert_all(self):
|
def convert_service_to_family(self, service_name, service_family, service):
|
||||||
if hasattr(self.space.containers, 'all'):
|
# tranform service object to family object
|
||||||
# Remove "all" and dispatch informations in all containers
|
|
||||||
for type_, containers in vars(self.space.containers.all).items():
|
|
||||||
if type_ == 'index':
|
|
||||||
continue
|
|
||||||
if isinstance(containers, list):
|
|
||||||
for elt in containers:
|
|
||||||
for container in self.space.containers.container.values():
|
|
||||||
if container.name != 'all':
|
|
||||||
if not hasattr(container, type_):
|
|
||||||
setattr(container, type_, [])
|
|
||||||
new_elt = copy(elt)
|
|
||||||
new_elt.container = container
|
|
||||||
getattr(container, type_).append(new_elt)
|
|
||||||
else:
|
|
||||||
for name, elt in containers.items():
|
|
||||||
for container in self.space.containers.container.values():
|
|
||||||
if container.name != 'all':
|
|
||||||
if not hasattr(container, type_):
|
|
||||||
setattr(container, type_, OrderedDict())
|
|
||||||
old_container = getattr(container, type_)
|
|
||||||
if name in old_container:
|
|
||||||
raise CreoleDictConsistencyError('{}'.format(name))
|
|
||||||
new_elt = copy(elt)
|
|
||||||
new_elt.container = container
|
|
||||||
old_container[name] = new_elt
|
|
||||||
del self.space.containers.all
|
|
||||||
|
|
||||||
def convert_container_to_family(self, container_name, container_family, container):
|
|
||||||
# tranform container object to family object
|
|
||||||
# add services, service_accesses, ...
|
# add services, service_accesses, ...
|
||||||
for elttype in self.objectspace.container_elt_attr_list:
|
for elttype in self.objectspace.service_elt_attr_list:
|
||||||
if hasattr(container, elttype):
|
if hasattr(service, elttype):
|
||||||
family = self.objectspace.family()
|
family = self.objectspace.family()
|
||||||
key_type_name = elttype.upper() + '_KEY_TYPE'
|
|
||||||
if key_type_name in globals():
|
|
||||||
key_type = globals()[key_type_name]
|
|
||||||
else:
|
|
||||||
key_type = {}
|
|
||||||
if elttype.endswith('s'):
|
if elttype.endswith('s'):
|
||||||
family.name = elttype + 'es'
|
family.name = elttype + 'es'
|
||||||
else:
|
else:
|
||||||
family.name = elttype + 's'
|
family.name = elttype + 's'
|
||||||
values = getattr(container, elttype)
|
values = getattr(service, elttype)
|
||||||
if isinstance(values, dict):
|
if isinstance(values, dict):
|
||||||
values = list(values.values())
|
values = list(values.values())
|
||||||
family.family = self.make_group_from_elts(elttype,
|
family.family = self.convert_subelement_service(elttype,
|
||||||
values,
|
values,
|
||||||
key_type,
|
'services.{}.{}'.format(service_name, family.name))
|
||||||
'containers.{}.{}'.format(container_name, family.name),
|
|
||||||
True)
|
|
||||||
family.mode = None
|
family.mode = None
|
||||||
container_family[family.name] = family
|
service_family[family.name] = family
|
||||||
|
|
||||||
|
def convert_subelement_service(self, name, elts, path):
|
||||||
|
families = []
|
||||||
|
new_elts = self._reorder_elts(name, elts, True)
|
||||||
|
for index, elt_info in enumerate(new_elts):
|
||||||
|
elt = elt_info['elt']
|
||||||
|
elt_name = elt_info['elt_name']
|
||||||
|
|
||||||
|
# try to launch _update_xxxx() function
|
||||||
|
update_elt = '_update_' + elt_name
|
||||||
|
if hasattr(self, update_elt):
|
||||||
|
getattr(self, update_elt)(elt, index, path)
|
||||||
|
variables = []
|
||||||
|
subpath = '{}.{}{}'.format(path, name, index)
|
||||||
|
listname = '{}list'.format(name)
|
||||||
|
activate_path = '.'.join([subpath, 'activate'])
|
||||||
|
if elt in self.grouplist_conditions:
|
||||||
|
# FIXME transformer le activate qui disparait en boolean
|
||||||
|
self.objectspace.list_conditions.setdefault(listname,
|
||||||
|
{}).setdefault(self.grouplist_conditions[elt],
|
||||||
|
[]).append(activate_path)
|
||||||
|
for key in dir(elt):
|
||||||
|
if key.startswith('_') or key.endswith('_type') or key in ERASED_ATTRIBUTES:
|
||||||
|
continue
|
||||||
|
value = getattr(elt, key)
|
||||||
|
if isinstance(value, list):
|
||||||
|
continue
|
||||||
|
if key == 'service':
|
||||||
|
value = value.name
|
||||||
|
if key == listname:
|
||||||
|
self.objectspace.list_conditions.setdefault(listname,
|
||||||
|
{}).setdefault(
|
||||||
|
value,
|
||||||
|
[]).append(activate_path)
|
||||||
|
continue
|
||||||
|
if key == 'name':
|
||||||
|
true_key = elt_name
|
||||||
|
else:
|
||||||
|
true_key = key
|
||||||
|
if true_key in self.objectspace.booleans_attributs:
|
||||||
|
type_ = 'boolean'
|
||||||
|
else:
|
||||||
|
type_ = 'string'
|
||||||
|
dtd_key_type = true_key + '_type'
|
||||||
|
|
||||||
|
if hasattr(elt, dtd_key_type):
|
||||||
|
type_ = KEY_TYPE[getattr(elt, dtd_key_type)]
|
||||||
|
multi = isinstance(value, list)
|
||||||
|
variables.append(self._generate_element(elt_name,
|
||||||
|
key,
|
||||||
|
value,
|
||||||
|
type_,
|
||||||
|
subpath,
|
||||||
|
multi))
|
||||||
|
# FIXME ne devrait pas etre True par défaut
|
||||||
|
variables.append(self._generate_element(name, 'activate', True, 'boolean', subpath))
|
||||||
|
family = self.objectspace.family()
|
||||||
|
family.name = '{}{}'.format(name, index)
|
||||||
|
family.variable = variables
|
||||||
|
family.mode = None
|
||||||
|
self.paths.append('family', subpath, 'services', creoleobj=family)
|
||||||
|
families.append(family)
|
||||||
|
return families
|
||||||
|
|
||||||
def _generate_element(self, eltname, name, value, type_, subpath, multi=False):
|
def _generate_element(self, eltname, name, value, type_, subpath, multi=False):
|
||||||
var_data = {'name': name, 'doc': '', 'value': value,
|
var_data = {'name': name, 'doc': '', 'value': value,
|
||||||
|
@ -216,103 +236,17 @@ class ContainerAnnotator:
|
||||||
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, 'containers', 'containers', variable)
|
self.paths.append('variable', path, 'services', 'service', variable)
|
||||||
return variable
|
return variable
|
||||||
|
|
||||||
def _make_disknod_auto(self, type_, index, variable, container_path):
|
def _update_file(self, file_, index, service_path):
|
||||||
if not hasattr(self.space.constraints, 'auto'):
|
if file_.file_type == "UnicodeOption":
|
||||||
self.space.constraints.auto = []
|
|
||||||
auto = self.objectspace.auto()
|
|
||||||
self.objectspace.index += 1
|
|
||||||
auto.index = self.objectspace.index
|
|
||||||
auto.namespace = 'containers'
|
|
||||||
param1 = self.objectspace.param()
|
|
||||||
param1.text = type_
|
|
||||||
param2 = self.objectspace.param()
|
|
||||||
param2.text = variable.name
|
|
||||||
auto.param = [param1, param2]
|
|
||||||
auto.name = 'cdrom_minormajor'
|
|
||||||
family = 'disknod{}'.format(index)
|
|
||||||
auto.target = '{}.{}.{}'.format(container_path, family, type_)
|
|
||||||
if not hasattr(self.space, 'constraints'):
|
|
||||||
self.space.constraints = self.objectspace.constraints()
|
|
||||||
self.space.constraints.auto.append(auto)
|
|
||||||
|
|
||||||
def _make_disknod_type(self, index, variable, container_path):
|
|
||||||
auto = self.objectspace.auto()
|
|
||||||
self.objectspace.index += 1
|
|
||||||
auto.index = self.objectspace.index
|
|
||||||
auto.namespace = 'containers'
|
|
||||||
param = self.objectspace.param()
|
|
||||||
param.text = variable.name
|
|
||||||
auto.param = [param]
|
|
||||||
auto.name = 'device_type'
|
|
||||||
family = 'disknod{}'.format(index)
|
|
||||||
auto.target = '{}.{}.type'.format(container_path, family)
|
|
||||||
if not hasattr(self.space, 'constraints'):
|
|
||||||
self.space.constraints = self.objectspace.constraints()
|
|
||||||
if not hasattr(self.space.constraints, 'auto'):
|
|
||||||
self.space.constraints.auto = []
|
|
||||||
self.space.constraints.auto.append(auto)
|
|
||||||
|
|
||||||
|
|
||||||
def _update_disknod(self, disknod, index, container_path):
|
|
||||||
disknod.major = None
|
|
||||||
disknod.minor = None
|
|
||||||
disknod.type = None
|
|
||||||
self._make_disknod_auto('minor', index, disknod, container_path)
|
|
||||||
self._make_disknod_auto('major', index, disknod, container_path)
|
|
||||||
self._make_disknod_type(index, disknod, container_path)
|
|
||||||
disknod.mode = u'rwm'
|
|
||||||
disknod.permission = 'allow'
|
|
||||||
|
|
||||||
def _update_file(self, file_, index, container_path):
|
|
||||||
if file_.name_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'):
|
||||||
raise CreoleDictConsistencyError(_('attribute source mandatory for file with SymLinkOption name '
|
raise CreoleDictConsistencyError(_('attribute source mandatory for file with variable name '
|
||||||
'for {}').format(file_.name))
|
'for {}').format(file_.name))
|
||||||
|
|
||||||
def _split_elts(self, name, key, value, elt):
|
|
||||||
"""for example::
|
|
||||||
|
|
||||||
<service_access service='ntp'>
|
|
||||||
<port protocol='udp' service_accesslist='ntp_udp'>123</port>
|
|
||||||
<tcpwrapper>ntpd</tcpwrapper>
|
|
||||||
</service_access>
|
|
||||||
|
|
||||||
builds a `service_access` object, but we need **two** objects `service_access`,
|
|
||||||
for example one for the port and one for the tcpwrapper
|
|
||||||
"""
|
|
||||||
for subelt in value:
|
|
||||||
new_elt = copy(elt)
|
|
||||||
for subsubelt in dir(subelt):
|
|
||||||
if subsubelt.startswith('_') or subsubelt == 'index':
|
|
||||||
continue
|
|
||||||
if hasattr(new_elt, subsubelt):
|
|
||||||
if hasattr(elt, 'name'):
|
|
||||||
name_ = elt.name
|
|
||||||
else:
|
|
||||||
name_ = elt.service
|
|
||||||
raise CreoleDictConsistencyError(_('attribute {} already exists '
|
|
||||||
'for {}').format(subsubelt,
|
|
||||||
name_))
|
|
||||||
setattr(new_elt, subsubelt, getattr(subelt, subsubelt))
|
|
||||||
if hasattr(new_elt, 'node_name') or hasattr(new_elt, 'name_type'):
|
|
||||||
raise CreoleDictConsistencyError(_('attribute node_name or name_type '
|
|
||||||
'already exists for {}'
|
|
||||||
'').format(name))
|
|
||||||
if hasattr(subelt, key + '_type'):
|
|
||||||
type_ = getattr(subelt, key + '_type')
|
|
||||||
setattr(new_elt, 'name_type', type_)
|
|
||||||
setattr(new_elt, 'node_name', key)
|
|
||||||
if not hasattr(new_elt, name + 'list'):
|
|
||||||
setattr(new_elt, name + 'list', '___auto_{}'.format(elt.service))
|
|
||||||
else:
|
|
||||||
self.grouplist_conditions[new_elt] = '___auto_{}'.format(elt.service)
|
|
||||||
yield new_elt
|
|
||||||
|
|
||||||
def _reorder_elts(self, name, elts, duplicate_list):
|
def _reorder_elts(self, name, elts, duplicate_list):
|
||||||
"""Reorders by index the elts (the interface,
|
"""Reorders by index the elts (the interface,
|
||||||
the hosts, actions...)
|
the hosts, actions...)
|
||||||
|
@ -338,11 +272,6 @@ class ContainerAnnotator:
|
||||||
if key.startswith('_') or key.endswith('_type') or key in ERASED_ATTRIBUTES:
|
if key.startswith('_') or key.endswith('_type') or key in ERASED_ATTRIBUTES:
|
||||||
continue
|
continue
|
||||||
value = getattr(elt, key)
|
value = getattr(elt, key)
|
||||||
if isinstance(value, list) and duplicate_list:
|
|
||||||
for new_elt in self._split_elts(name, key, value, elt):
|
|
||||||
dict_elts.setdefault(new_elt.name, []).append({'elt_name': key,
|
|
||||||
'elt': new_elt})
|
|
||||||
elt_added = True
|
|
||||||
if not elt_added:
|
if not elt_added:
|
||||||
if hasattr(elt, 'name'):
|
if hasattr(elt, 'name'):
|
||||||
eltname = elt.name
|
eltname = elt.name
|
||||||
|
@ -355,7 +284,7 @@ class ContainerAnnotator:
|
||||||
result_elts.extend(elt)
|
result_elts.extend(elt)
|
||||||
return result_elts
|
return result_elts
|
||||||
|
|
||||||
def make_group_from_elts(self, name, elts, key_type, path, duplicate_list):
|
def make_group_from_elts(self, name, elts, path, duplicate_list):
|
||||||
"""Splits each objects into a group (and `OptionDescription`, in tiramisu terms)
|
"""Splits each objects into a group (and `OptionDescription`, in tiramisu terms)
|
||||||
and build elements and its attributes (the `Options` in tiramisu terms)
|
and build elements and its attributes (the `Options` in tiramisu terms)
|
||||||
"""
|
"""
|
||||||
|
@ -373,7 +302,7 @@ class ContainerAnnotator:
|
||||||
subpath = '{}.{}{}'.format(path, name, index)
|
subpath = '{}.{}{}'.format(path, name, index)
|
||||||
listname = '{}list'.format(name)
|
listname = '{}list'.format(name)
|
||||||
activate_path = '.'.join([subpath, 'activate'])
|
activate_path = '.'.join([subpath, 'activate'])
|
||||||
if name not in NOT_NEED_ACTIVATE and elt in self.grouplist_conditions:
|
if elt in self.grouplist_conditions:
|
||||||
# FIXME transformer le activate qui disparait en boolean
|
# FIXME transformer le activate qui disparait en boolean
|
||||||
self.objectspace.list_conditions.setdefault(listname,
|
self.objectspace.list_conditions.setdefault(listname,
|
||||||
{}).setdefault(self.grouplist_conditions[elt],
|
{}).setdefault(self.grouplist_conditions[elt],
|
||||||
|
@ -383,19 +312,18 @@ class ContainerAnnotator:
|
||||||
continue
|
continue
|
||||||
value = getattr(elt, key)
|
value = getattr(elt, key)
|
||||||
if isinstance(value, list) and duplicate_list:
|
if isinstance(value, list) and duplicate_list:
|
||||||
|
# FIXME plusieurs fichier si calculé !
|
||||||
continue
|
continue
|
||||||
if key == 'container':
|
if key == listname:
|
||||||
value = value.name
|
|
||||||
if name not in NOT_NEED_ACTIVATE and key == listname:
|
|
||||||
self.objectspace.list_conditions.setdefault(listname,
|
self.objectspace.list_conditions.setdefault(listname,
|
||||||
{}).setdefault(
|
{}).setdefault(
|
||||||
value,
|
value,
|
||||||
[]).append(activate_path)
|
[]).append(activate_path)
|
||||||
continue
|
continue
|
||||||
default_type = 'string'
|
|
||||||
if key in self.objectspace.booleans_attributs:
|
if key in self.objectspace.booleans_attributs:
|
||||||
default_type = 'boolean'
|
type_ = 'boolean'
|
||||||
type_ = key_type.get(key, default_type)
|
else:
|
||||||
|
type_ = 'string'
|
||||||
dtd_key_type = key + '_type'
|
dtd_key_type = key + '_type'
|
||||||
if hasattr(elt, dtd_key_type):
|
if hasattr(elt, dtd_key_type):
|
||||||
type_ = KEY_TYPE[getattr(elt, dtd_key_type)]
|
type_ = KEY_TYPE[getattr(elt, dtd_key_type)]
|
||||||
|
@ -406,19 +334,18 @@ class ContainerAnnotator:
|
||||||
type_,
|
type_,
|
||||||
subpath,
|
subpath,
|
||||||
multi))
|
multi))
|
||||||
if name not in NOT_NEED_ACTIVATE:
|
# FIXME ne devrait pas etre True par défaut
|
||||||
# FIXME ne devrait pas etre True par défaut
|
variables.append(self._generate_element(name, 'activate', True, 'boolean', subpath))
|
||||||
variables.append(self._generate_element(name, 'activate', True, 'boolean', subpath))
|
|
||||||
family = self.objectspace.family()
|
family = self.objectspace.family()
|
||||||
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, 'containers', creoleobj=family)
|
self.paths.append('family', subpath, 'services', creoleobj=family)
|
||||||
families.append(family)
|
families.append(family)
|
||||||
return families
|
return families
|
||||||
|
|
||||||
|
|
||||||
class ActionAnnotator(ContainerAnnotator):
|
class ActionAnnotator(ServiceAnnotator):
|
||||||
def __init__(self, objectspace):
|
def __init__(self, objectspace):
|
||||||
self.space = objectspace.space
|
self.space = objectspace.space
|
||||||
self.paths = objectspace.paths
|
self.paths = objectspace.paths
|
||||||
|
@ -443,7 +370,7 @@ class ActionAnnotator(ContainerAnnotator):
|
||||||
'').format(namespace))
|
'').format(namespace))
|
||||||
namespaces.append(namespace)
|
namespaces.append(namespace)
|
||||||
action.name = action.namespace
|
action.name = action.namespace
|
||||||
new_actions = self.make_group_from_elts('action', actions.action, {}, subpath, False)
|
new_actions = self.make_group_from_elts('action', actions.action, subpath, False)
|
||||||
family = self.objectspace.family()
|
family = self.objectspace.family()
|
||||||
family.name = actions.name
|
family.name = actions.name
|
||||||
family.family = new_actions
|
family.family = new_actions
|
||||||
|
@ -491,7 +418,7 @@ class SpaceAnnotator(object):
|
||||||
self.change_family_mode()
|
self.change_family_mode()
|
||||||
self.dynamic_families()
|
self.dynamic_families()
|
||||||
self.filter_separators()
|
self.filter_separators()
|
||||||
self.absolute_path_for_symlink_in_containers()
|
self.absolute_path_for_symlink_in_services()
|
||||||
self.convert_helps()
|
self.convert_helps()
|
||||||
if hasattr(self.space, 'constraints'):
|
if hasattr(self.space, 'constraints'):
|
||||||
del self.space.constraints.index
|
del self.space.constraints.index
|
||||||
|
@ -499,10 +426,10 @@ class SpaceAnnotator(object):
|
||||||
raise Exception('constraints again?')
|
raise Exception('constraints again?')
|
||||||
del self.space.constraints
|
del self.space.constraints
|
||||||
|
|
||||||
def absolute_path_for_symlink_in_containers(self):
|
def absolute_path_for_symlink_in_services(self):
|
||||||
if not hasattr(self.space, 'containers'):
|
if not hasattr(self.space, 'services'):
|
||||||
return
|
return
|
||||||
families = vars(self.space.containers).values()
|
families = vars(self.space.services).values()
|
||||||
for family in families:
|
for family in families:
|
||||||
if hasattr(family, 'family'):
|
if hasattr(family, 'family'):
|
||||||
for fam in family.family.values():
|
for fam in family.family.values():
|
||||||
|
@ -645,7 +572,7 @@ class SpaceAnnotator(object):
|
||||||
(not has_value or is_follower) and variable.type != 'choice'):
|
(not has_value or is_follower) and variable.type != 'choice'):
|
||||||
variable.mode = modes_level[0]
|
variable.mode = modes_level[0]
|
||||||
if has_value:
|
if has_value:
|
||||||
if not HIGH_COMPATIBILITY or (not path.startswith('creole.containers.') \
|
if not HIGH_COMPATIBILITY or (not path.startswith('creole.services.') \
|
||||||
and path not in self.force_no_value and path not in self.force_not_mandatory):
|
and path not in self.force_no_value and path not in self.force_not_mandatory):
|
||||||
variable.mandatory = True
|
variable.mandatory = True
|
||||||
if variable.hidden is True:
|
if variable.hidden is True:
|
||||||
|
@ -965,9 +892,9 @@ class SpaceAnnotator(object):
|
||||||
if param.type == 'eole':
|
if param.type == 'eole':
|
||||||
param.type = 'variable'
|
param.type = 'variable'
|
||||||
if param.type == 'variable':
|
if param.type == 'variable':
|
||||||
if HIGH_COMPATIBILITY and param.text.startswith('container_ip'):
|
# if HIGH_COMPATIBILITY and param.text.startswith('container_ip'):
|
||||||
if param.optional is True:
|
# if param.optional is True:
|
||||||
param_option_indexes.append(idx)
|
# param_option_indexes.append(idx)
|
||||||
try:
|
try:
|
||||||
param.text = self.paths.get_variable_path(param.text, namespace)
|
param.text = self.paths.get_variable_path(param.text, namespace)
|
||||||
except CreoleDictConsistencyError as err:
|
except CreoleDictConsistencyError as err:
|
||||||
|
@ -1167,9 +1094,9 @@ class SpaceAnnotator(object):
|
||||||
# 'so cannot depends to an '
|
# 'so cannot depends to an '
|
||||||
# 'other variable'
|
# 'other variable'
|
||||||
# ).format(fill.name, fill.target))
|
# ).format(fill.name, fill.target))
|
||||||
if HIGH_COMPATIBILITY and param.text.startswith('container_ip'):
|
# if HIGH_COMPATIBILITY and param.text.startswith('container_ip'):
|
||||||
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 = self.paths.get_variable_path(param.text, namespace)
|
||||||
except CreoleDictConsistencyError as err:
|
except CreoleDictConsistencyError as err:
|
||||||
|
|
|
@ -30,12 +30,12 @@ from json import dump
|
||||||
|
|
||||||
from .i18n import _
|
from .i18n import _
|
||||||
from .xmlreflector import XMLReflector, HIGH_COMPATIBILITY
|
from .xmlreflector import XMLReflector, HIGH_COMPATIBILITY
|
||||||
from .annotator import ERASED_ATTRIBUTES, ActionAnnotator, ContainerAnnotator, SpaceAnnotator
|
from .annotator import ERASED_ATTRIBUTES, ActionAnnotator, ServiceAnnotator, SpaceAnnotator
|
||||||
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 'slave', that shall be forced to the Redefinable type
|
||||||
FORCE_REDEFINABLES = ('family', 'slave', 'container', 'disknod', 'variables', 'family_action')
|
FORCE_REDEFINABLES = ('family', 'slave', 'service', 'disknod', 'variables', 'family_action')
|
||||||
# CreoleObjSpace's elements that shall be forced to the UnRedefinable type
|
# CreoleObjSpace's elements that shall be forced to the UnRedefinable type
|
||||||
FORCE_UNREDEFINABLES = ('value', 'input', 'profile', 'ewtapp', 'tag', 'saltaction')
|
FORCE_UNREDEFINABLES = ('value', 'input', 'profile', 'ewtapp', 'tag', 'saltaction')
|
||||||
# CreoleObjSpace's elements that shall be set to the UnRedefinable type
|
# CreoleObjSpace's elements that shall be set to the UnRedefinable type
|
||||||
|
@ -86,8 +86,8 @@ class CreoleObjSpace(object):
|
||||||
self.redefine_variables = None
|
self.redefine_variables = None
|
||||||
self.probe_variables = []
|
self.probe_variables = []
|
||||||
|
|
||||||
# elt container's attrs list
|
# elt service's attrs list
|
||||||
self.container_elt_attr_list = [] #
|
self.service_elt_attr_list = [] #
|
||||||
# ['variable', 'separator', 'family']
|
# ['variable', 'separator', 'family']
|
||||||
self.forced_text_elts = set()
|
self.forced_text_elts = set()
|
||||||
# ['disknod', 'follower', 'target', 'service', 'package', 'ip', 'value', 'tcpwrapper',
|
# ['disknod', 'follower', 'target', 'service', 'package', 'ip', 'value', 'tcpwrapper',
|
||||||
|
@ -106,8 +106,8 @@ class CreoleObjSpace(object):
|
||||||
forced_text_elt = False
|
forced_text_elt = False
|
||||||
if elt.type == 'mixed':
|
if elt.type == 'mixed':
|
||||||
forced_text_elt = True
|
forced_text_elt = True
|
||||||
if elt.name == 'container':
|
if elt.name == 'service':
|
||||||
self.container_elt_attr_list = [elt.content.left.name]
|
self.service_elt_attr_list = [elt.content.left.name]
|
||||||
self.parse_dtd_right_left_elt(elt.content)
|
self.parse_dtd_right_left_elt(elt.content)
|
||||||
for attr in elt.iterattributes():
|
for attr in elt.iterattributes():
|
||||||
atomic = False
|
atomic = False
|
||||||
|
@ -152,10 +152,10 @@ class CreoleObjSpace(object):
|
||||||
|
|
||||||
def parse_dtd_right_left_elt(self, elt):
|
def parse_dtd_right_left_elt(self, elt):
|
||||||
if elt.right.type == 'or':
|
if elt.right.type == 'or':
|
||||||
self.container_elt_attr_list.append(elt.right.left.name)
|
self.service_elt_attr_list.append(elt.right.left.name)
|
||||||
self.parse_dtd_right_left_elt(elt.right)
|
self.parse_dtd_right_left_elt(elt.right)
|
||||||
else:
|
else:
|
||||||
self.container_elt_attr_list.append(elt.right.name)
|
self.service_elt_attr_list.append(elt.right.name)
|
||||||
|
|
||||||
def _convert_boolean(self, value): # pylint: disable=R0201
|
def _convert_boolean(self, value): # pylint: disable=R0201
|
||||||
"""Boolean coercion. The Creole XML may contain srings like `True` or `False`
|
"""Boolean coercion. The Creole XML may contain srings like `True` or `False`
|
||||||
|
@ -297,7 +297,7 @@ class CreoleObjSpace(object):
|
||||||
def create_tree_structure(self, space, child, creoleobj): # pylint: disable=R0201
|
def create_tree_structure(self, space, child, creoleobj): # pylint: disable=R0201
|
||||||
"""
|
"""
|
||||||
Builds the tree structure of the object space here
|
Builds the tree structure of the object space here
|
||||||
we set containers attributes in order to be populated later on
|
we set services attributes in order to be populated later on
|
||||||
for example::
|
for example::
|
||||||
|
|
||||||
space = Family()
|
space = Family()
|
||||||
|
@ -458,7 +458,7 @@ class CreoleObjSpace(object):
|
||||||
|
|
||||||
def space_visitor(self, eosfunc_file): # pylint: disable=C0111
|
def space_visitor(self, eosfunc_file): # pylint: disable=C0111
|
||||||
ActionAnnotator(self)
|
ActionAnnotator(self)
|
||||||
ContainerAnnotator(self)
|
ServiceAnnotator(self)
|
||||||
SpaceAnnotator(self, eosfunc_file)
|
SpaceAnnotator(self, eosfunc_file)
|
||||||
|
|
||||||
def save(self, filename, force_no_save=False):
|
def save(self, filename, force_no_save=False):
|
||||||
|
@ -515,7 +515,7 @@ class CreoleObjSpace(object):
|
||||||
_name = 'leader'
|
_name = 'leader'
|
||||||
else:
|
else:
|
||||||
_name = name
|
_name = name
|
||||||
if name in ['containers', 'variables', 'actions']:
|
if name in ['services', 'variables', 'actions']:
|
||||||
_name = 'family'
|
_name = 'family'
|
||||||
if HIGH_COMPATIBILITY and not hasattr(subspace, 'doc'):
|
if HIGH_COMPATIBILITY and not hasattr(subspace, 'doc'):
|
||||||
subspace.doc = ''
|
subspace.doc = ''
|
||||||
|
@ -524,7 +524,7 @@ class CreoleObjSpace(object):
|
||||||
child_node = SubElement(node, _name)
|
child_node = SubElement(node, _name)
|
||||||
self._xml_export(child_node, subspace, _name)
|
self._xml_export(child_node, subspace, _name)
|
||||||
elif isinstance(space, self.Atom):
|
elif isinstance(space, self.Atom):
|
||||||
if name == 'containers':
|
if name == 'services':
|
||||||
child_node = SubElement(node, 'family')
|
child_node = SubElement(node, 'family')
|
||||||
child_node.attrib['name'] = name
|
child_node.attrib['name'] = name
|
||||||
else:
|
else:
|
||||||
|
@ -652,7 +652,7 @@ class Path(object):
|
||||||
raise CreoleOperationError('current_namespace must not be None')
|
raise CreoleOperationError('current_namespace must not be None')
|
||||||
dico = self._get_variable(name)
|
dico = self._get_variable(name)
|
||||||
if not allow_source:
|
if not allow_source:
|
||||||
if dico['namespace'] != 'creole' 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))
|
||||||
|
|
|
@ -465,7 +465,7 @@ class CreoleTemplateEngine:
|
||||||
"""
|
"""
|
||||||
for option in await self.config.option.list(type='all'):
|
for option in await self.config.option.list(type='all'):
|
||||||
namespace = await option.option.name()
|
namespace = await option.option.name()
|
||||||
if namespace in ['containers', 'actions']:
|
if namespace in ['services', 'actions']:
|
||||||
continue
|
continue
|
||||||
elif namespace == 'creole':
|
elif namespace == 'creole':
|
||||||
await self.load_eole_variables_creole(self.config,
|
await self.load_eole_variables_creole(self.config,
|
||||||
|
@ -476,11 +476,11 @@ class CreoleTemplateEngine:
|
||||||
option)
|
option)
|
||||||
for template in listdir(self.distrib_dir):
|
for template in listdir(self.distrib_dir):
|
||||||
self.prepare_template(join(self.distrib_dir, template))
|
self.prepare_template(join(self.distrib_dir, template))
|
||||||
for container_obj in await self.config.option('containers').list('all'):
|
for service_obj in await self.config.option('services').list('all'):
|
||||||
current_container = await container_obj.option.doc()
|
current_container = await service_obj.option.doc()
|
||||||
if container is not None and container != current_container:
|
if container is not None and container != current_container:
|
||||||
continue
|
continue
|
||||||
for fills in await container_obj.list('all'):
|
for fills in await service_obj.list('all'):
|
||||||
if await fills.option.name() == 'files':
|
if await fills.option.name() == 'files':
|
||||||
for fill_obj in await fills.list('all'):
|
for fill_obj in await fills.list('all'):
|
||||||
fill = await fill_obj.value.dict()
|
fill = await fill_obj.value.dict()
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<containers>
|
<services>
|
||||||
<container name="tata">
|
<service name="tata">
|
||||||
</container>
|
</service>
|
||||||
</containers>
|
</services>
|
||||||
</creole>
|
</creole>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="tata">
|
<family name="service0" doc="tata">
|
||||||
<property>basic</property>
|
<property>basic</property>
|
||||||
</family>
|
</family>
|
||||||
</family>
|
</family>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name='général'>
|
<family name='général'>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="Général">
|
<family name="Général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="basic">
|
<family name="general" mode="basic">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="général">
|
<family name="général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="Général">
|
<family name="Général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general-1">
|
<family name="general-1">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general1">
|
<family name="general1">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="expert">
|
<family name="general" mode="expert">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="Général">
|
<family name="Général">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="expert">
|
<family name="general" mode="expert">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="expert">
|
<family name="general" mode="expert">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="expert">
|
<family name="general" mode="expert">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="enumfam" mode="expert">
|
<family name="enumfam" mode="expert">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<containers/>
|
<services/>
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="expert">
|
<family name="general" mode="expert">
|
||||||
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
|
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="expert">
|
<family name="general" mode="expert">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="expert">
|
<family name="general" mode="expert">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general" mode="expert">
|
<family name="general" mode="expert">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers>
|
<services>
|
||||||
<container name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file" filelist="afilllist"/>
|
<file name="/tmp/file" filelist="afilllist"/>
|
||||||
</container>
|
</service>
|
||||||
</containers>
|
</services>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"creole.general.condition": "non", "creole.general.mode_conteneur_actif": "non", "creole.general.mode_conteneur_actif2": "non", "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": "/tmp/file", "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "file", "containers.container0.files.file0.activate": true}
|
{"creole.general.condition": "non", "creole.general.mode_conteneur_actif": "non", "creole.general.mode_conteneur_actif2": "non", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file", "services.service0.files.file0.activate": true}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="test">
|
<family name="service0" doc="test">
|
||||||
<family doc="files" name="files">
|
<family doc="files" name="files">
|
||||||
<family doc="file0" name="file0">
|
<family doc="file0" name="file0">
|
||||||
<variable doc="" multi="False" name="mkdir" type="boolean">
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<creole>
|
||||||
|
|
||||||
|
<services>
|
||||||
|
<service name="test">
|
||||||
|
<file name="/tmp/file" filelist="afilllist"/>
|
||||||
|
</service>
|
||||||
|
</services>
|
||||||
|
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="condition" type="oui/non" description="No change">
|
||||||
|
<value>oui</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="mode_conteneur_actif" type="oui/non" description="No change" hidden="True">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="mode_conteneur_actif2" type="oui/non" description="No change" hidden="True">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<separators/>
|
||||||
|
</variables>
|
||||||
|
|
||||||
|
<constraints>
|
||||||
|
<condition name="disabled_if_in" source="condition">
|
||||||
|
<param>oui</param>
|
||||||
|
<target type="variable">mode_conteneur_actif</target>
|
||||||
|
<target type="variable">mode_conteneur_actif2</target>
|
||||||
|
<target type="filelist">afilllist</target>
|
||||||
|
</condition>
|
||||||
|
</constraints>
|
||||||
|
|
||||||
|
<help/>
|
||||||
|
|
||||||
|
</creole>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1 @@
|
||||||
|
{"creole.general.condition": "oui", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file"}
|
|
@ -1,48 +1,56 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="test">
|
<family name="service0" doc="test">
|
||||||
<property>basic</property>
|
|
||||||
</family>
|
|
||||||
<family name="container1" doc="test2">
|
|
||||||
<family doc="files" name="files">
|
<family doc="files" name="files">
|
||||||
<family doc="file0" name="file0">
|
<family doc="file0" name="file0">
|
||||||
<variable doc="" multi="False" name="mkdir" type="boolean">
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
||||||
<value>False</value>
|
<value>False</value>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="" multi="False" name="name" type="string">
|
<variable doc="" multi="False" name="name" type="string">
|
||||||
<value>/etc/mailname</value>
|
<value>/tmp/file</value>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="" multi="False" name="rm" type="boolean">
|
<variable doc="" multi="False" name="rm" type="boolean">
|
||||||
<value>False</value>
|
<value>False</value>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="" multi="False" name="source" type="string">
|
<variable doc="" multi="False" name="source" type="string">
|
||||||
<value>mailname</value>
|
<value>file</value>
|
||||||
</variable>
|
</variable>
|
||||||
<variable doc="" multi="False" name="activate" type="boolean">
|
<variable doc="" multi="False" name="activate" type="boolean">
|
||||||
|
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</variable>
|
</variable>
|
||||||
</family>
|
</family>
|
||||||
</family>
|
</family>
|
||||||
<property>basic</property>
|
<property>basic</property>
|
||||||
</family>
|
</family>
|
||||||
<family name="container2" doc="test3">
|
|
||||||
<property>basic</property>
|
|
||||||
</family>
|
|
||||||
</family>
|
</family>
|
||||||
<family doc="" name="creole">
|
<family doc="" name="creole">
|
||||||
<family doc="général" name="general">
|
<family doc="general" name="general">
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">
|
<variable doc="No change" multi="False" name="condition" type="choice">
|
||||||
<choice type="string">oui</choice>
|
<choice type="string">oui</choice>
|
||||||
<choice type="string">non</choice>
|
<choice type="string">non</choice>
|
||||||
<property>force_default_on_freeze</property>
|
|
||||||
<property>frozen</property>
|
|
||||||
<property>hidden</property>
|
|
||||||
<property>mandatory</property>
|
<property>mandatory</property>
|
||||||
<property>normal</property>
|
<property>normal</property>
|
||||||
<value type="string">oui</value>
|
<value type="string">oui</value>
|
||||||
</variable>
|
</variable>
|
||||||
|
<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>
|
||||||
|
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>
|
||||||
|
<value type="string">non</value>
|
||||||
|
</variable>
|
||||||
|
<variable doc="No change" multi="False" name="mode_conteneur_actif2" type="choice">
|
||||||
|
<choice type="string">oui</choice>
|
||||||
|
<choice type="string">non</choice>
|
||||||
|
<property>mandatory</property>
|
||||||
|
<property>normal</property>
|
||||||
|
<property expected="oui" inverse="False" source="creole.general.condition" type="calculation">disabled</property>
|
||||||
|
<value type="string">non</value>
|
||||||
|
</variable>
|
||||||
</family>
|
</family>
|
||||||
<separators/>
|
<separators/>
|
||||||
</family>
|
</family>
|
|
@ -1,12 +1,12 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers>
|
<services>
|
||||||
<container name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file1" filelist="afilllist"/>
|
<file name="/tmp/file1" filelist="afilllist"/>
|
||||||
<file name="/tmp/file2" filelist="afilllist"/>
|
<file name="/tmp/file2" filelist="afilllist"/>
|
||||||
</container>
|
</service>
|
||||||
</containers>
|
</services>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"creole.general.condition": "non", "creole.general.mode_conteneur_actif": "non", "creole.general.mode_conteneur_actif2": "non", "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": "/tmp/file1", "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "file1", "containers.container0.files.file0.activate": true, "containers.container0.files.file1.mkdir": false, "containers.container0.files.file1.name": "/tmp/file2", "containers.container0.files.file1.rm": false, "containers.container0.files.file1.source": "file2", "containers.container0.files.file1.activate": true}
|
{"creole.general.condition": "non", "creole.general.mode_conteneur_actif": "non", "creole.general.mode_conteneur_actif2": "non", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.name": "/tmp/file1", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file1", "services.service0.files.file0.activate": true, "services.service0.files.file1.mkdir": false, "services.service0.files.file1.name": "/tmp/file2", "services.service0.files.file1.rm": false, "services.service0.files.file1.source": "file2", "services.service0.files.file1.activate": true}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="test">
|
<family name="service0" doc="test">
|
||||||
<family doc="files" name="files">
|
<family doc="files" name="files">
|
||||||
<family doc="file0" name="file0">
|
<family doc="file0" name="file0">
|
||||||
<variable doc="" multi="False" name="mkdir" type="boolean">
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers>
|
<services>
|
||||||
<container name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file" filelist="afilllist"/>
|
<file name="/tmp/file" filelist="afilllist"/>
|
||||||
</container>
|
</service>
|
||||||
</containers>
|
</services>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"creole.general.condition": "non", "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": "/tmp/file", "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "file"}
|
{"creole.general.condition": "non", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file"}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="test">
|
<family name="service0" doc="test">
|
||||||
<family doc="files" name="files">
|
<family doc="files" name="files">
|
||||||
<family doc="file0" name="file0">
|
<family doc="file0" name="file0">
|
||||||
<variable doc="" multi="False" name="mkdir" type="boolean">
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers>
|
<services>
|
||||||
<container name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file" filelist="afilllist"/>
|
<file name="/tmp/file" filelist="afilllist"/>
|
||||||
</container>
|
</service>
|
||||||
</containers>
|
</services>
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"creole.general.condition": "non", "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": "/tmp/file", "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "file"}
|
{"creole.general.condition": "non", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file"}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="test">
|
<family name="service0" doc="test">
|
||||||
<family doc="files" name="files">
|
<family doc="files" name="files">
|
||||||
<family doc="file0" name="file0">
|
<family doc="file0" name="file0">
|
||||||
<variable doc="" multi="False" name="mkdir" type="boolean">
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers>
|
<services>
|
||||||
<container name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file" filelist="afilllist"/>
|
<file name="/tmp/file" filelist="afilllist"/>
|
||||||
</container>
|
</service>
|
||||||
</containers>
|
</services>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"creole.general.condition": "non", "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": "/tmp/file", "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "file"}
|
{"creole.general.condition": "non", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file"}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="test">
|
<family name="service0" doc="test">
|
||||||
<family doc="files" name="files">
|
<family doc="files" name="files">
|
||||||
<family doc="file0" name="file0">
|
<family doc="file0" name="file0">
|
||||||
<variable doc="" multi="False" name="mkdir" type="boolean">
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers>
|
<services>
|
||||||
<container name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file" filelist="afilllist"/>
|
<file name="/tmp/file" filelist="afilllist"/>
|
||||||
</container>
|
</service>
|
||||||
</containers>
|
</services>
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"creole.general.condition": "non", "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": "/tmp/file", "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "file"}
|
{"creole.general.condition": "non", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file"}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="test">
|
<family name="service0" doc="test">
|
||||||
<family doc="files" name="files">
|
<family doc="files" name="files">
|
||||||
<family doc="file0" name="file0">
|
<family doc="file0" name="file0">
|
||||||
<variable doc="" multi="False" name="mkdir" type="boolean">
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers>
|
<services>
|
||||||
<container name="test">
|
<service name="test">
|
||||||
<file name="/tmp/file1" filelist="afilllist"/>
|
<file name="/tmp/file1" filelist="afilllist"/>
|
||||||
</container>
|
</service>
|
||||||
</containers>
|
</services>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"creole.general.condition": "non", "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": "/tmp/file1", "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "file1"}
|
{"creole.general.condition": "non", "services.service0.files.file0.mkdir": false, "services.service0.files.file0.name": "/tmp/file1", "services.service0.files.file0.rm": false, "services.service0.files.file0.source": "file1"}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
<family name="containers">
|
<family name="services">
|
||||||
<family name="container0" doc="test">
|
<family name="service0" doc="test">
|
||||||
<family doc="files" name="files">
|
<family doc="files" name="files">
|
||||||
<family doc="file0" name="file0">
|
<family doc="file0" name="file0">
|
||||||
<variable doc="" multi="False" name="mkdir" type="boolean">
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<creole>
|
<creole>
|
||||||
|
|
||||||
<containers/>
|
<services/>
|
||||||
|
|
||||||
<variables>
|
<variables>
|
||||||
<family name="general">
|
<family name="general">
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue