This commit is contained in:
Emmanuel Garette 2020-07-07 18:12:16 +02:00
parent eb6b22e5b1
commit ef948fa109
183 changed files with 798 additions and 914 deletions

View File

@ -101,44 +101,41 @@ class ServiceAnnotator:
self.grouplist_conditions = {} self.grouplist_conditions = {}
self.convert_services() self.convert_services()
def gen_family(self,
name,
):
family = self.objectspace.family()
family.name = name
family.doc = name
family.mode = None
return family
def convert_services(self): def convert_services(self):
if not hasattr(self.space, 'services'): if not hasattr(self.space, 'services'):
return return
if not hasattr(self.space.services, 'service'): if not hasattr(self.space.services, 'service'):
del self.space.services del self.space.services
return return
for idx, service in enumerate(self.space.services.service.values()): self.space.services.hidden = True
service_name = f'service{idx}' families = {}
family = self.objectspace.family() for idx, service_name in enumerate(self.space.services.service.keys()):
family.name = service_name service = self.space.services.service[service_name]
family.doc = service.name new_service = self.objectspace.service()
family.mode = None for elttype, values in vars(service).items():
family.family = self.convert_service_to_family(f'services.{service_name}', if elttype == 'name' or elttype in ERASED_ATTRIBUTES:
service, setattr(new_service, elttype, values)
) continue
setattr(self.space.services, family.name, family) eltname = elttype + 's'
del self.space.services.service family = self.gen_family(eltname)
if isinstance(values, dict):
def convert_service_to_family(self, values = list(values.values())
subpath, family.family = self.make_group_from_elts(elttype,
service, values,
): f'services.{service_name}.{eltname}',
services = {} )
for elttype, values in vars(service).items(): setattr(new_service, elttype, family)
if elttype == 'name' or elttype in ERASED_ATTRIBUTES: families[service_name] = new_service
continue self.space.services.service = families
eltname = elttype + 's'
family = self.objectspace.family()
family.name = eltname
family.mode = None
if isinstance(values, dict):
values = list(values.values())
family.family = self.make_group_from_elts(elttype,
values,
f'{subpath}.{eltname}',
)
services[family.name] = family
return services
def make_group_from_elts(self, def make_group_from_elts(self,
name, name,
@ -160,8 +157,14 @@ class ServiceAnnotator:
update_elt = '_update_' + elt_name update_elt = '_update_' + elt_name
if hasattr(self, update_elt): if hasattr(self, update_elt):
getattr(self, update_elt)(elt, index, path) getattr(self, update_elt)(elt, index, path)
variables = []
subpath = '{}.{}{}'.format(path, name, index) if hasattr(elt, 'source'):
c_name = elt.source
else:
c_name = elt.name
family = self.gen_family(c_name)
family.variable = []
subpath = '{}.{}'.format(path, c_name)
listname = '{}list'.format(name) listname = '{}list'.format(name)
activate_path = '.'.join([subpath, 'activate']) activate_path = '.'.join([subpath, 'activate'])
if elt in self.grouplist_conditions: if elt in self.grouplist_conditions:
@ -179,75 +182,54 @@ class ServiceAnnotator:
value, value,
[]).append(activate_path) []).append(activate_path)
continue continue
if key == 'name': family.variable.append(self._generate_element(elt_name,
true_key = elt_name key,
else: value,
true_key = key elt,
if key in self.objectspace.booleans_attributs: f'{subpath}.{key}'
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(key,
value,
type_,
subpath,
multi,
))
# FIXME ne devrait pas etre True par défaut # FIXME ne devrait pas etre True par défaut
# devrait etre un calcule # devrait etre un calcule
variables.append(self._generate_element('activate', family.variable.append(self._generate_element(elt_name,
True, 'activate',
'boolean', True,
subpath, elt,
)) activate_path,
family = self.objectspace.family() ))
family.name = '{}{}'.format(name, index)
family.variable = variables
family.mode = None
self.paths.add_family('services',
subpath,
family,
)
families.append(family) families.append(family)
return families return families
def _generate_element(self, def _generate_element(self,
elt_name,
key, key,
value, value,
type_, elt,
subpath, path,
multi=False,
): ):
variable = self.objectspace.variable() variable = self.objectspace.variable()
variable.name = key variable.name = key
if type_ != 'symlink':
variable.doc = key
variable.multi = multi
variable.mode = None variable.mode = None
variable.hidden = True if key == 'name':
true_key = elt_name
else:
true_key = key
dtd_key_type = true_key + '_type'
if key == 'activate':
type_ = 'boolean'
elif hasattr(elt, dtd_key_type):
type_ = KEY_TYPE[getattr(elt, dtd_key_type)]
elif key in self.objectspace.booleans_attributs:
type_ = 'boolean'
else:
type_ = 'string'
variable.type = type_ variable.type = type_
if value is not None: if type_ == 'symlink':
if type_ == 'symlink': variable.opt = value
variable.opt = value else:
else: variable.doc = key
if not multi: val = self.objectspace.value()
val = self.objectspace.value() val.name = value
val.name = value variable.value = [val]
value = [val]
else:
# value is a list of objects
value_list = []
for val_iter in value:
val = self.objectspace.value()
val.name = val_iter.name
value_list.append(val)
value = value_list
variable.value = value
path = f'{subpath}.{key}'
self.paths.add_variable('services', self.paths.add_variable('services',
path, path,
'service', 'service',
@ -264,8 +246,8 @@ class ServiceAnnotator:
""" """
new_elts = {} new_elts = {}
# reorder elts by index # reorder elts by index
for elt in elts: for idx, elt in enumerate(elts):
new_elts.setdefault(elt.index, []).append(elt) new_elts.setdefault(idx, []).append(elt)
idxes = list(new_elts.keys()) idxes = list(new_elts.keys())
idxes.sort() idxes.sort()
result_elts = [] result_elts = []
@ -330,12 +312,15 @@ class SpaceAnnotator(object):
def absolute_path_for_symlink_in_services(self): def absolute_path_for_symlink_in_services(self):
if not hasattr(self.space, 'services'): if not hasattr(self.space, 'services'):
return return
families = vars(self.space.services).values() for family_name, family in vars(self.space.services).items():
for family in families: if not isinstance(family, dict):
if hasattr(family, 'family'): continue
for fam in family.family.values(): for fam in family.values():
for fam1 in fam.family: for fam1_name, fam1 in vars(fam).items():
for variable in fam1.variable: if fam1_name == 'name' or fam1_name in ERASED_ATTRIBUTES:
continue
for fam2 in fam1.family:
for variable in fam2.variable:
if variable.type == 'symlink' and '.' not in variable.name: if variable.type == 'symlink' and '.' not in variable.name:
variable.opt = self.paths.get_variable_path(variable.opt, variable.opt = self.paths.get_variable_path(variable.opt,
VARIABLE_NAMESPACE, VARIABLE_NAMESPACE,
@ -767,8 +752,8 @@ class SpaceAnnotator(object):
raise CreoleDictConsistencyError(_('Cannot load {}').format(param.text)) raise CreoleDictConsistencyError(_('Cannot load {}').format(param.text))
elif param.type == 'python': elif param.type == 'python':
try: try:
#values = eval(param.text, {'eosfunc': self.eosfunc, '__builtins__': {'range': range, 'str': str}})
values = eval(param.text, {'eosfunc': self.eosfunc, '__builtins__': {'range': range, 'str': str}}) values = eval(param.text, {'eosfunc': self.eosfunc, '__builtins__': {'range': range, 'str': str}})
#FIXME : eval('[str(i) for i in range(3, 13)]', {'eosfunc': eosfunc, '__builtins__': {'range': range, 'str': str}})
except NameError: except NameError:
raise CreoleDictConsistencyError(_('The function {} is unknown').format(param.text)) raise CreoleDictConsistencyError(_('The function {} is unknown').format(param.text))
if not isinstance(values, list): if not isinstance(values, list):
@ -794,12 +779,7 @@ class SpaceAnnotator(object):
for idx, param in enumerate(check.param): for idx, param in enumerate(check.param):
if param.type not in TYPE_PARAM_CHECK: if param.type not in TYPE_PARAM_CHECK:
raise CreoleDictConsistencyError(_('cannot use {} type as a param in check for {}').format(param.type, check.target)) raise CreoleDictConsistencyError(_('cannot use {} type as a param in check for {}').format(param.type, check.target))
if param.type == 'eole':
param.type = 'variable'
if param.type == 'variable': if param.type == 'variable':
# if HIGH_COMPATIBILITY and param.text.startswith('container_ip'):
# if param.optional is True:
# 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:
@ -1093,8 +1073,6 @@ class SpaceAnnotator(object):
if param.type not in TYPE_PARAM_CONDITION: if param.type not in TYPE_PARAM_CONDITION:
raise CreoleDictConsistencyError(_('cannot use {} type as a param ' raise CreoleDictConsistencyError(_('cannot use {} type as a param '
'in a condition').format(param.type)) 'in a condition').format(param.type))
if param.type == 'eole':
param.type = 'variable'
def check_choice_option_condition(self, force_remove_targets): def check_choice_option_condition(self, force_remove_targets):
# remove condition for ChoiceOption that don't have param # remove condition for ChoiceOption that don't have param

View File

@ -43,33 +43,10 @@
<!-- files element --> <!-- files element -->
<!-- ============== --> <!-- ============== -->
<!ELEMENT action ((input* | profile* | ewtapp* | tag* | saltaction*)*)>
<!ATTLIST action type (form|custom|external|reader|apache) "custom">
<!ATTLIST action title CDATA #REQUIRED>
<!ATTLIST action description CDATA #REQUIRED>
<!ATTLIST action rewrite CDATA #IMPLIED>
<!ATTLIST action image CDATA #IMPLIED>
<!ATTLIST action actionlist CDATA #IMPLIED>
<!-- for apache action -->
<!ATTLIST action apache_path CDATA #IMPLIED>
<!ATTLIST action apache_path_type (FilenameOption|SymLinkOption|variable) "FilenameOption">
<!-- for external action -->
<!ATTLIST action url CDATA #IMPLIED>
<!ATTLIST action url_type (URLOption|SymLinkOption|variable) "URLOption">
<!-- for form action -->
<!ATTLIST action save (True|False) "False">
<!ELEMENT services (service*)> <!ELEMENT services (service*)>
<!ELEMENT service ((port* | tcpwrapper* | ip* | interface* | package* | file* | digitalcertificate* | override*)*) > <!ELEMENT service ((port* | tcpwrapper* | ip* | interface* | package* | file* | digitalcertificate* | override*)*) >
<!ATTLIST service name CDATA #REQUIRED> <!ATTLIST service name CDATA #REQUIRED>
<!ATTLIST service method (systemd|none) "systemd">
<!ELEMENT input (#PCDATA)>
<!ELEMENT profile (#PCDATA)>
<!ELEMENT ewtapp (#PCDATA)>
<!ELEMENT tag (#PCDATA)>
<!ELEMENT saltaction (#PCDATA)>
<!ELEMENT port (#PCDATA)> <!ELEMENT port (#PCDATA)>
<!ATTLIST port port_type (PortOption|SymLinkOption|variable) "PortOption"> <!ATTLIST port port_type (PortOption|SymLinkOption|variable) "PortOption">
@ -114,7 +91,6 @@
<!ATTLIST family name CDATA #REQUIRED> <!ATTLIST family name CDATA #REQUIRED>
<!ATTLIST family description CDATA #IMPLIED> <!ATTLIST family description CDATA #IMPLIED>
<!ATTLIST family mode (basic|normal|expert) "basic"> <!ATTLIST family mode (basic|normal|expert) "basic">
<!ATTLIST family icon CDATA #IMPLIED>
<!ATTLIST family hidden (True|False) "False"> <!ATTLIST family hidden (True|False) "False">
<!ATTLIST family dynamic CDATA #IMPLIED> <!ATTLIST family dynamic CDATA #IMPLIED>
@ -140,7 +116,6 @@
<!ELEMENT separator (#PCDATA)> <!ELEMENT separator (#PCDATA)>
<!ATTLIST separator name CDATA #REQUIRED> <!ATTLIST separator name CDATA #REQUIRED>
<!ATTLIST separator never_hidden CDATA #IMPLIED>
<!ELEMENT value (#PCDATA)> <!ELEMENT value (#PCDATA)>

View File

@ -34,3 +34,7 @@ class CreoleDictConsistencyError(Exception):
"""It's not only that the Creole XML is valid against the Creole DTD """It's not only that the Creole XML is valid against the Creole DTD
it's that it is not consistent. it's that it is not consistent.
""" """
class CreoleLoaderError(Exception):
pass

View File

@ -1,32 +1,26 @@
"""loader """loader
flattened XML specific flattened XML specific
""" """
from os.path import join, isfile, isdir from os.path import join, isfile
from os import listdir from lxml.etree import DTD
#from ast import literal_eval import imp
from lxml.etree import parse, DTD
from tiramisu import (StrOption, OptionDescription, DynOptionDescription, PortOption, from tiramisu import (StrOption, OptionDescription, DynOptionDescription, PortOption,
IntOption, ChoiceOption, BoolOption, SymLinkOption, IPOption, IntOption, ChoiceOption, BoolOption, SymLinkOption, IPOption,
NetworkOption, NetmaskOption, DomainnameOption, BroadcastOption, NetworkOption, NetmaskOption, DomainnameOption, BroadcastOption,
URLOption, EmailOption, FilenameOption, UsernameOption, DateOption, URLOption, EmailOption, FilenameOption, UsernameOption, DateOption,
PasswordOption, BoolOption, MACOption, Leadership, submulti, PasswordOption, BoolOption, MACOption, Leadership, submulti,
Params, ParamSelfOption, ParamOption, ParamDynOption, ParamValue, Calculation, calc_value, Params, ParamSelfOption, ParamOption, ParamDynOption, ParamValue, Calculation, calc_value)
groups, owners)
from tiramisu.error import ConfigError
from .config import dtdfilename from .config import dtdfilename
from .i18n import _ from .i18n import _
#For compatibility
from .xmlreflector import HIGH_COMPATIBILITY
#from . import eosfunc
from .objspace import CreoleObjSpace
from .utils import normalize_family from .utils import normalize_family
from .annotator import VARIABLE_NAMESPACE from .annotator import VARIABLE_NAMESPACE
import imp from .error import CreoleLoaderError
FUNC_TO_DICT = ['valid_not_equal'] FUNC_TO_DICT = ['valid_not_equal']
KNOWN_TAGS = ['family', 'variable', 'separators', 'leader', 'property']
class ConvertDynOptionDescription(DynOptionDescription): class ConvertDynOptionDescription(DynOptionDescription):
@ -37,19 +31,11 @@ class ConvertDynOptionDescription(DynOptionDescription):
check_name=False) check_name=False)
class CreoleLoaderError(Exception):
pass
def convert_tiramisu_value(value, obj): def convert_tiramisu_value(value, obj):
""" """
convertit les variables dans le bon type si nécessaire convertit les variables dans le bon type si nécessaire
""" """
if value is None:
return value
def _convert_boolean(value): def _convert_boolean(value):
if isinstance(value, bool):
return value
prop = {'True': True, prop = {'True': True,
'False': False, 'False': False,
'None': None} 'None': None}
@ -57,10 +43,9 @@ def convert_tiramisu_value(value, obj):
raise Exception('unknown value {} while trying to cast {} to boolean'.format(value, obj)) raise Exception('unknown value {} while trying to cast {} to boolean'.format(value, obj))
return prop[value] return prop[value]
func = {IntOption: int, StrOption: str, PortOption: str, if value is None:
DomainnameOption: str, EmailOption: str, URLOption: str, return value
IPOption: str, NetmaskOption: str, NetworkOption: str, func = {IntOption: int,
BroadcastOption: str, FilenameOption: str,
BoolOption: _convert_boolean}.get(obj, None) BoolOption: _convert_boolean}.get(obj, None)
if func is None: if func is None:
return value return value
@ -98,18 +83,15 @@ CONVERT_OPTION = {'number': dict(opttype=IntOption),
} }
class Elt(object): class Elt:
def __init__(self, attrib): def __init__(self, attrib):
self.attrib = attrib self.attrib = attrib
class PopulateTiramisuObjects(object): class PopulateTiramisuObjects:
def __init__(self): def __init__(self):
self.storage = ElementStorage() self.storage = ElementStorage()
self.booleans = [] self.booleans = []
self.force_store_values = set()
self.separators = {}
self.groups = {}
def parse_dtd(self, dtdfilename): def parse_dtd(self, dtdfilename):
"""Loads the Creole DTD """Loads the Creole DTD
@ -128,129 +110,111 @@ class PopulateTiramisuObjects(object):
if set(attr.itervalues()) == set(['True', 'False']): if set(attr.itervalues()) == set(['True', 'False']):
self.booleans.append(attr.name) self.booleans.append(attr.name)
def make_tiramisu_objects(self, xmlroot, eosfunc): def get_root_family(self):
elt = Elt({'name': 'baseoption'}) family = Family(Elt({'name': 'baseoption',
if eosfunc is None: 'doc': 'baseoption'}),
self.eosfunc = None self.booleans,
else: self.storage,
self.eosfunc = imp.load_source('eosfunc', eosfunc) self.eosfunc,
family = Family(elt, self.booleans, self.storage, self.eosfunc) )
self.storage.add('.', family) self.storage.add('.', family)
elts = {}
for elt in xmlroot:
elts.setdefault(elt.tag, []).append(elt)
list_elts = list(elts.keys())
if 'family' in list_elts:
list_elts.remove('family')
list_elts.insert(0, 'family')
for elt in list_elts:
xmlelts_ = elts[elt]
if elt == 'family':
xmlelts = []
actions = None
# VARIABLE_NAMESPACE family has to be loaded before any other family
# because `extra` family could use `VARIABLE_NAMESPACE` variables.
# `actions` family has to be loaded at the very end
# because it may use `VARIABLE_NAMESPACE` or `extra` variables
for xml in xmlelts_:
if xml.attrib['name'] == VARIABLE_NAMESPACE:
xmlelts.insert(0, xml)
elif xml.attrib['name'] == 'actions':
actions = xml
else:
xmlelts.append(xml)
if actions is not None:
xmlelts.append(actions)
else:
xmlelts = xmlelts_
for xmlelt in xmlelts:
if xmlelt.tag != 'family':
raise CreoleLoaderError(_('unknown tag {}').format(xmlelt.tag))
self._iter_family(xmlelt, family)
def _populate_variable(self, elt, subpath, is_follower, is_leader):
variable = Variable(elt, self.booleans, self.storage, is_follower, is_leader, self.eosfunc)
path = self._build_path(subpath, elt)
properties = variable.attrib.get('properties', [])
if 'force_store_value' in properties or "auto_freeze" in properties:
self.force_store_values.add(path)
self.storage.add(path, variable)
return variable
def _populate_family(self, elt, subpath):
if subpath is None:
force_icon = False
else:
force_icon = not subpath.startswith('containers') and not subpath.startswith('actions')
family = Family(elt, self.booleans, self.storage, self.eosfunc, force_icon)
path = self._build_path(subpath, elt)
self.storage.add(path, family)
return family return family
def _build_path(self, subpath, elt): def reorder_family(self, xmlroot):
if subpath is None: xmlelts = []
subpath = elt.attrib['name'] for xmlelt in xmlroot:
else: # VARIABLE_NAMESPACE family has to be loaded before any other family
subpath += '.' + elt.attrib['name'] # because `extra` family could use `VARIABLE_NAMESPACE` variables.
return subpath if xmlelt.attrib['name'] == VARIABLE_NAMESPACE:
xmlelts.insert(0, xmlelt)
def _iter_leader(self, leader, subpath):
subpath = self._build_path(subpath, leader)
family = Family(leader, self.booleans, self.storage, self.eosfunc)
family.set_leader()
self.storage.add(subpath, family)
leader_name = None
for var in leader:
if var.tag == 'property':
self._parse_properties(family, var)
elif var.tag == 'variable':
if leader_name is None:
leader_name = var.attrib['name']
self.groups[leader_name] = []
else:
self.groups[leader_name].append(var.attrib['name'])
self._iter_family(var, family, subpath=subpath)
else: else:
raise CreoleLoaderError(_('unknown tag {}').format(var.tag)) xmlelts.append(xmlelt)
return family return xmlelts
def _iter_family(self, child, family, subpath=None): def make_tiramisu_objects(self, xmlroot, eosfunc):
if child.tag not in ['family', 'variable', 'separators', 'leader', 'property']: self.eosfunc = imp.load_source('eosfunc', eosfunc)
family = self.get_root_family()
for xmlelt in self.reorder_family(xmlroot):
self.iter_family(xmlelt,
family,
None,
)
def iter_family(self,
child,
family,
subpath,
):
if child.tag not in KNOWN_TAGS:
raise CreoleLoaderError(_('unknown tag {}').format(child.tag)) raise CreoleLoaderError(_('unknown tag {}').format(child.tag))
if child.tag == 'family': if child.tag in ['family', 'leader']:
old_family = family self.populate_family(family,
family = self._populate_family(child, subpath) child,
if old_family is not None: subpath,
old_family.add(family) )
if len(child) != 0:
subpath = self._build_path(subpath, child)
for c in child:
self._iter_family(c, family, subpath=subpath)
elif child.tag == 'leader':
leader = self._iter_leader(child, subpath)
family.add(leader)
elif child.tag == 'separators': elif child.tag == 'separators':
self._parse_separators(child) self.parse_separators(child)
elif child.tag == 'variable': elif child.tag == 'variable':
if family is None: self.populate_variable(child, subpath, family)
raise CreoleLoaderError(_('variable without family'))
is_follower = False
is_leader = False
if family.is_leader:
if child.attrib['name'] != family.attrib['name']:
is_follower = True
else:
is_leader = True
variable = self._populate_variable(child, subpath, is_follower, is_leader)
family.add(variable)
elif child.tag == 'property': elif child.tag == 'property':
self._parse_properties(family, child) self.parse_properties(family, child)
else: else:
raise Exception('unknown tag {}'.format(child.tag)) raise Exception('unknown tag {}'.format(child.tag))
def _parse_properties(self, family, child): def populate_family(self,
parent_family,
elt,
subpath,
):
path = self.build_path(subpath,
elt,
)
family = Family(elt,
self.booleans,
self.storage,
self.eosfunc,
)
self.storage.add(path, family)
if elt.tag == 'leader':
family.set_leader()
parent_family.add(family)
if len(elt) != 0:
for child in elt:
self.iter_family(child,
family,
path,
)
def parse_separators(self,
separators,
):
for separator in separators:
elt = self.storage.get(separator.attrib['name'])
elt.add_information('separator', separator.text)
def populate_variable(self, elt, subpath, family):
is_follower = False
is_leader = False
if family.is_leader:
if elt.attrib['name'] != family.attrib['name']:
is_follower = True
else:
is_leader = True
path = self.build_path(subpath,
elt,
)
variable = Variable(elt,
self.booleans,
self.storage,
is_follower,
is_leader,
self.eosfunc,
)
self.storage.add(path, variable)
family.add(variable)
def parse_properties(self, family, child):
if child.get('type') == 'calculation': if child.get('type') == 'calculation':
kwargs = {'condition': child.attrib['source'], kwargs = {'condition': child.attrib['source'],
'expected': ParamValue(child.attrib.get('expected'))} 'expected': ParamValue(child.attrib.get('expected'))}
@ -260,17 +224,13 @@ class PopulateTiramisuObjects(object):
else: else:
family.attrib['properties'].append(child.text) family.attrib['properties'].append(child.text)
def _parse_separators(self, separators): def build_path(self,
for separator in separators: subpath,
elt = self.storage.get(separator.attrib['name']) elt,
never_hidden = separator.attrib.get('never_hidden') ):
if never_hidden == 'True': if subpath is None:
never_hidden = True return elt.attrib['name']
else: return subpath + '.' + elt.attrib['name']
never_hidden = None
info = (separator.text, never_hidden)
self.separators[separator.attrib['name']] = info
elt.add_information('separator', info)
class ElementStorage: class ElementStorage:
@ -282,10 +242,6 @@ class ElementStorage:
raise CreoleLoaderError(_('path already loaded {}').format(path)) raise CreoleLoaderError(_('path already loaded {}').format(path))
self.paths[path] = elt self.paths[path] = elt
def add_information(self, path, name, information):
elt = self.get(path)
elt.add_information(name, information)
def get(self, path): def get(self, path):
if path not in self.paths: if path not in self.paths:
raise CreoleLoaderError(_('there is no element for path {}').format(path)) raise CreoleLoaderError(_('there is no element for path {}').format(path))
@ -313,115 +269,124 @@ class Variable(Common):
self.option = None self.option = None
self.informations = {} self.informations = {}
self.attrib = {} self.attrib = {}
self.attrib['properties'] = [] if elt.attrib['type'] != 'symlink':
self.attrib['properties'] = []
self.attrib['validators'] = [] self.attrib['validators'] = []
self.eosfunc = eosfunc self.eosfunc = eosfunc
self.storage = storage self.storage = storage
is_submulti = False self.booleans = booleans
self.populate_attrib(elt)
self.is_follower = is_follower
self.is_leader = is_leader
convert_option = CONVERT_OPTION[elt.attrib['type']]
self.object_type = convert_option['opttype']
self.populate_choice(elt)
for child in elt:
self.populate_property(child)
self.populate_value(child)
self.populate_check(child)
if 'initkwargs' in convert_option:
self.attrib.update(convert_option['initkwargs'])
if elt.attrib['type'] == 'symlink':
self.attrib['opt'] = storage.get(self.attrib['opt'])
def populate_attrib(self,
elt,
):
for key, value in elt.attrib.items(): for key, value in elt.attrib.items():
if key in booleans: if key == 'multi' and elt.attrib['type'] == 'symlink':
continue
if key == 'multi' and value == 'submulti':
value = submulti
elif key in self.booleans:
if value == 'True': if value == 'True':
value = True value = True
elif value == 'False': elif value == 'False':
value = False value = False
elif key == 'multi' and value == 'submulti':
is_submulti = True
value = submulti
else: else:
raise CreoleLoaderError(_('unknown value {} for {}').format(value, key)) raise CreoleLoaderError(_('unknown value {} for {}').format(value, key))
if key in ['help', 'test']: if key in ['help', 'test']:
self.add_information(key, value) self.add_information(key, value)
elif key == 'type': elif key != 'type':
pass
else:
self.attrib[key] = value self.attrib[key] = value
convert_option = CONVERT_OPTION[elt.attrib['type']]
self.object_type = convert_option['opttype'] def populate_choice(self,
elt,
):
if elt.attrib['type'] == 'choice': if elt.attrib['type'] == 'choice':
if self.attrib.get('choice'): values = []
self.attrib['values'] = getattr(self.eosfunc, self.attrib.get('choice')) for child in elt:
if child.tag == 'choice':
value = child.text
if child.attrib['type'] == 'number':
value = int(value)
values.append(value)
self.attrib['values'] = tuple(values)
def populate_property(self, child):
if child.tag == 'property':
if child.get('type') == 'calculation':
kwargs = {'condition': child.attrib['source'],
'expected': ParamValue(child.attrib.get('expected'))}
if child.attrib['inverse'] == 'True':
kwargs['reverse_condition'] = ParamValue(True)
self.attrib['properties'].append((ParamValue(child.text), kwargs))
else: else:
self.attrib['values'] = [] self.attrib['properties'].append(child.text)
for child in elt:
if child.tag == 'choice': def populate_value(self, child):
value = child.text if child.tag == 'value':
if 'type' in child.attrib and child.attrib['type'] == 'number': if child.attrib.get('type') == 'calculation':
value = int(value) if child.text is not None and child.text.strip():
if value is None: self.attrib['default'] = (child.text.strip(),)
value = u''
self.attrib['values'].append(value)
self.attrib['values'] = tuple(self.attrib['values'])
for child in elt:
if child.tag == 'property':
if child.get('type') == 'calculation':
kwargs = {'condition': child.attrib['source'],
'expected': ParamValue(child.attrib.get('expected'))}
if child.attrib['inverse'] == 'True':
kwargs['reverse_condition'] = ParamValue(True)
self.attrib['properties'].append((ParamValue(child.text), kwargs))
else: else:
self.attrib['properties'].append(child.text) params = []
elif child.tag == 'value': for param in child:
if child.attrib.get('type') == 'calculation': params.append(self.parse_param(param))
if child.text is not None and child.text.strip(): self.attrib['default'] = (child.attrib['name'], params, False)
self.attrib['default'] = (child.text.strip(),) else:
else: if "type" in child.attrib:
params = [] type_ = CONVERT_OPTION[child.attrib['type']]['opttype']
for param in child:
params.append(self.parse_param(param))
self.attrib['default'] = (child.attrib['name'], params, False)
else: else:
if "type" in child.attrib: type_ = self.object_type
type_ = CONVERT_OPTION[child.attrib['type']]['opttype'] if self.attrib['multi'] is True and not self.is_follower:
else: if 'default' not in self.attrib:
type_ = self.object_type self.attrib['default'] = []
if self.attrib['multi'] is True and not is_follower: value = convert_tiramisu_value(child.text, type_)
if 'default' not in self.attrib: self.attrib['default'].append(value)
self.attrib['default'] = [] if 'default_multi' not in self.attrib and not self.is_leader:
value = convert_tiramisu_value(child.text, type_) self.attrib['default_multi'] = value
self.attrib['default'].append(value) elif self.attrib['multi'] == submulti:
if 'default_multi' not in self.attrib and not is_leader: if 'default' not in self.attrib:
self.attrib['default_multi'] = value self.attrib['default'] = []
elif self.attrib['multi'] == submulti: value = convert_tiramisu_value(child.text, type_)
if 'default' not in self.attrib: if not self.is_follower:
self.attrib['default'] = [] if not isinstance(value, list):
value = convert_tiramisu_value(child.text, type_) dvalue = [value]
if not is_follower:
if not isinstance(value, list):
dvalue = [value]
else:
dvalue = value
self.attrib['default'].append(dvalue)
if value and 'default_multi' not in self.attrib and not is_leader:
self.attrib['default_multi'] = []
if not is_leader:
self.attrib['default_multi'].append(value)
else:
if 'default' in self.attrib:
raise CreoleLoaderError(_('default value already set for {}'
'').format(self.attrib['path']))
value = convert_tiramisu_value(child.text, type_)
if is_follower:
self.attrib['default_multi'] = value
else: else:
self.attrib['default'] = value dvalue = value
elif child.tag == 'choice': self.attrib['default'].append(dvalue)
# already load if value and 'default_multi' not in self.attrib and not self.is_leader:
pass self.attrib['default_multi'] = []
elif child.tag == 'check': if not self.is_leader:
params = [] self.attrib['default_multi'].append(value)
for param in child: else:
params.append(self.parse_param(param)) if 'default' in self.attrib:
#check.params = params raise CreoleLoaderError(_('default value already set for {}'
self.attrib['validators'].append((child.attrib['name'], params, child.attrib['warnings_only'])) '').format(self.attrib['path']))
else: value = convert_tiramisu_value(child.text, type_)
raise Exception('unknown tag {}'.format(child.tag)) if self.is_follower:
if 'initkwargs' in convert_option: self.attrib['default_multi'] = value
self.attrib.update(convert_option['initkwargs']) else:
if elt.attrib['type'] == 'symlink': self.attrib['default'] = value
del self.attrib['properties']
del self.attrib['multi'] def populate_check(self, child):
self.attrib['opt'] = storage.get(self.attrib['opt']) if child.tag == 'check':
params = []
for param in child:
params.append(self.parse_param(param))
#check.params = params
self.attrib['validators'].append((child.attrib['name'], params, child.attrib['warnings_only']))
def parse_param(self, param): def parse_param(self, param):
name = param.attrib.get('name', '') name = param.attrib.get('name', '')
@ -515,7 +480,7 @@ class Variable(Common):
import traceback import traceback
traceback.print_exc() traceback.print_exc()
name = self.attrib['name'] name = self.attrib['name']
raise CreoleLoaderError(_('cannot create option {}: {}').format(name, err)) raise CreoleLoaderError(_('cannot create option "{}": {}').format(name, err))
for key, value in self.informations.items(): for key, value in self.informations.items():
option.impl_set_information(key, value) option.impl_set_information(key, value)
self.option = option self.option = option
@ -523,42 +488,25 @@ class Variable(Common):
class Family(Common): class Family(Common):
def __init__(self, elt, booleans, storage, eosfunc, force_icon=False): def __init__(self,
elt,
booleans,
storage,
eosfunc,
):
self.option = None self.option = None
self.attrib = {} self.attrib = {}
self.is_leader = False self.is_leader = False
if force_icon: self.informations = {}
self.informations = {'icon': None}
else:
self.informations = {}
self.children = [] self.children = []
self.storage = storage self.storage = storage
self.eosfunc = eosfunc self.eosfunc = eosfunc
self.attrib['properties'] = [] self.attrib['properties'] = []
for key, value in elt.attrib.items(): for key, value in elt.attrib.items():
if key in booleans: if key == 'help':
if value == 'True':
value = True
elif value == 'False':
value = False
else:
raise CreoleLoaderError(_('unknown value {} for {}').format(value, key))
if key == 'icon':
self.add_information('icon', value)
continue
elif key == 'hidden':
if value:
self.attrib['properties'].append(key)
elif key == 'mode':
self.attrib['properties'].append(value)
elif key == 'help':
self.add_information(key, value) self.add_information(key, value)
elif key == 'type':
pass
else: else:
self.attrib[key] = value self.attrib[key] = value
if 'doc' not in self.attrib:
self.attrib['doc'] = u''
def add(self, child): def add(self, child):
self.children.append(child) self.children.append(child)
@ -589,13 +537,11 @@ class Family(Common):
else: else:
option = Leadership(**self.attrib) option = Leadership(**self.attrib)
except Exception as err: except Exception as err:
raise CreoleLoaderError(_('cannot create optiondescription {}: {}').format(self.attrib['name'], err)) print(self.attrib)
raise CreoleLoaderError(_('cannot create optiondescription "{}": {}').format(self.attrib['name'], err))
for key, value in self.informations.items(): for key, value in self.informations.items():
option.impl_set_information(key, value) option.impl_set_information(key, value)
self.option = option self.option = option
#if self.is_leader:
# self.option.impl_set_group_type(groups.leader)
return self.option return self.option

View File

@ -36,7 +36,7 @@ from .path import Path
# CreoleObjSpace's elements like 'family' or 'follower', 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', 'follower', 'service', 'disknod', 'variables') FORCE_REDEFINABLES = ('family', 'follower', 'service', 'disknod', 'variables')
# 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',)
# CreoleObjSpace's elements that shall be set to the UnRedefinable type # CreoleObjSpace's elements that shall be set to the UnRedefinable type
UNREDEFINABLE = ('submulti', 'multi', 'type') UNREDEFINABLE = ('submulti', 'multi', 'type')
@ -47,9 +47,18 @@ CONVERT_PROPERTIES = {'auto_save': ['force_store_value'], 'auto_freeze': ['force
RENAME_ATTIBUTES = {'description': 'doc'} RENAME_ATTIBUTES = {'description': 'doc'}
INCOMPATIBLE_ATTRIBUTES = [['multi', 'submulti']] INCOMPATIBLE_ATTRIBUTES = [['multi', 'submulti']]
FORCED_TEXT_ELTS_AS_NAME = ('choice', 'property') FORCED_TEXT_ELTS_AS_NAME = ('choice', 'property', 'value', 'target')
#TYPE_TARGET_CONDITION = ('variable', 'family') CONVERT_EXPORT = {'Leadership': 'leader',
'Separators': 'separators',
'Variable': 'variable',
'Value': 'value',
'Property': 'property',
'Choice': 'choice',
'Param': 'param',
'Separator': 'separator',
'Check': 'check',
}
# _____________________________________________________________________________ # _____________________________________________________________________________
# special types definitions for the Object Space's internal representation # special types definitions for the Object Space's internal representation
@ -474,7 +483,7 @@ class CreoleObjSpace:
variableobj.redefine = child.attrib['target'] in self.redefine_variables variableobj.redefine = child.attrib['target'] in self.redefine_variables
if not hasattr(variableobj, 'index'): if not hasattr(variableobj, 'index'):
variableobj.index = self.index variableobj.index = self.index
if child.tag in ['fill', 'condition', 'check', 'action']: if child.tag in ['fill', 'condition', 'check']:
variableobj.namespace = namespace variableobj.namespace = namespace
def fill_variableobj_path_attribute(self, def fill_variableobj_path_attribute(self,
@ -537,60 +546,47 @@ class CreoleObjSpace:
space = list(space.values()) space = list(space.values())
if isinstance(space, list): if isinstance(space, list):
for subspace in space: for subspace in space:
if isinstance(subspace, self.Leadership): if name == 'value' and (not hasattr(subspace, 'name') or subspace.name is None):
_name = 'leader' raise Exception('pfff')
else:
_name = name
if name in ['services', 'variables', 'actions']:
_name = 'family'
if HIGH_COMPATIBILITY and not hasattr(subspace, 'doc'):
subspace.doc = ''
if _name == 'value' and (not hasattr(subspace, 'name') or subspace.name is None):
continue continue
_name = CONVERT_EXPORT.get(subspace.__class__.__name__, 'family')
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, (self.Redefinable, self.UnRedefinable))):
if name == 'services': _name = CONVERT_EXPORT.get(space.__class__.__name__, 'family')
child_node = SubElement(node, 'family') child_node = SubElement(node, _name)
if _name != name:
child_node.attrib['name'] = name child_node.attrib['name'] = name
if 'doc' not in child_node.attrib.keys():
child_node.attrib['doc'] = name
for subname in self.get_attributes(space):
subspace = getattr(space, subname)
self._sub_xml_export(subname, child_node, name, subspace, space)
elif name not in ERASED_ATTRIBUTES:
# # FIXME plutot dans annotator ...
if node.tag in ['variable', 'family', 'leader']:
if name in PROPERTIES:
if space is True:
for prop in CONVERT_PROPERTIES.get(name, [name]):
SubElement(node, 'property').text = prop
return
if name == 'mode' and space:
SubElement(node, 'property').text = space
return
# Not param for calculation ...
if name == 'name' and node_name in FORCED_TEXT_ELTS_AS_NAME and not hasattr(current_space, 'param'):
node.text = str(space)
elif name == 'text' and node_name in self.forced_text_elts:
node.text = space
elif node.tag == 'family' and name == 'name':
if 'doc' not in node.attrib.keys():
node.attrib['doc'] = space
node.attrib['name'] = normalize_family(space, check_name=False)
else: else:
child_node = SubElement(node, name) if name in RENAME_ATTIBUTES:
for subname in self.get_attributes(space): name = RENAME_ATTIBUTES[name]
subspace = getattr(space, subname) if space is not None:
self._sub_xml_export(subname, child_node, name, subspace, space) node.attrib[name] = str(space)
elif isinstance(space, self.Redefinable):
child_node = SubElement(node, 'family')
child_node.attrib['name'] = name
for subname in self.get_attributes(space):
subspace = getattr(space, subname)
self._sub_xml_export(subname, child_node, name, subspace, space)
else:
# FIXME plutot dans annotator ...
if name in PROPERTIES and node.tag in ['variable', 'family', 'leader']:
if space is True:
for prop in CONVERT_PROPERTIES.get(name, [name]):
SubElement(node, 'property').text = prop
elif name not in ERASED_ATTRIBUTES:
if name == 'name' and node_name in self.forced_text_elts_as_name and not hasattr(current_space, 'param'):
if isinstance(space, str):
node.text = space
else:
node.text = str(space)
elif name == 'text' and node_name in self.forced_text_elts:
node.text = space
elif node.tag == 'family' and name == 'name':
if 'doc' not in node.attrib.keys():
node.attrib['doc'] = space
node.attrib['name'] = normalize_family(space, check_name=False)
elif node.tag in ['variable', 'family', 'leader'] and name == 'mode':
if space is not None:
SubElement(node, 'property').text = space
else:
if name in RENAME_ATTIBUTES:
name = RENAME_ATTIBUTES[name]
if space is not None:
node.attrib[name] = str(space)
def _xml_export(self, def _xml_export(self,
node, node,
@ -599,4 +595,9 @@ class CreoleObjSpace:
): ):
for name in self.get_attributes(space): for name in self.get_attributes(space):
subspace = getattr(space, name) subspace = getattr(space, name)
self._sub_xml_export(name, node, node_name, subspace, space) self._sub_xml_export(name,
node,
node_name,
subspace,
space,
)

View File

@ -115,15 +115,6 @@ class Path:
) -> str: # pylint: disable=C0111 ) -> str: # pylint: disable=C0111
return self._get_variable(name)['family'] return self._get_variable(name)['family']
def get_variable_family_path(self,
name: str,
) -> str: # pylint: disable=C0111
dico = self._get_variable(name)
list_path = [dico['namespace'], dico['family']]
if dico['leader'] is not None:
list_path.append(dico['leader'])
return '.'.join(list_path)
def get_variable_namespace(self, def get_variable_namespace(self,
name: str, name: str,
) -> str: # pylint: disable=C0111 ) -> str: # pylint: disable=C0111

View File

@ -1,6 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="tata"/> <property>hidden</property>
<family doc="tata" name="tata"/>
</family> </family>
</rougail> </rougail>

View File

@ -1,8 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<services/>
<variables> <variables>
<family name="général"> <family name="général">
<variable name="mode_conteneur_actif" type="oui/non" description="No change" auto_freeze="True"> <variable name="mode_conteneur_actif" type="oui/non" description="No change" auto_freeze="True">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" name="general">
<property>basic</property> <property>basic</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" name="general">
<property>basic</property> <property>basic</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="Redefine description" multi="True" name="mode_conteneur_actif" type="choice"> <variable doc="Redefine description" multi="True" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="Redefine description" multi="submulti" name="mode_conteneur_actif" type="choice"> <variable doc="Redefine description" multi="submulti" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>basic</property> <property>basic</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>basic</property> <property>basic</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="Général" name="general"> <family doc="Général" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="domain"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="domain">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="number"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="number">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -10,7 +10,7 @@
</variable> </variable>
</family> </family>
<separators> <separators>
<separator name="mode_conteneur_actif" never_hidden="True">Établissement</separator> <separator name="mode_conteneur_actif">Établissement</separator>
</separators> </separators>
</variables> </variables>

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">
@ -15,7 +15,7 @@
</variable> </variable>
</family> </family>
<separators> <separators>
<separator name="rougail.general.mode_conteneur_actif" never_hidden="True">Établissement</separator> <separator name="rougail.general.mode_conteneur_actif">Établissement</separator>
</separators> </separators>
</family> </family>
</rougail> </rougail>

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" name="general">
<property>basic</property> <property>basic</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" name="general">
<property>basic</property> <property>basic</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="string"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="string">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="string"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="string">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="string"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="string">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>basic</property> <property>basic</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="Général" name="general"> <family doc="Général" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>basic</property> <property>basic</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="général" name="general"> <family doc="général" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="string"> <variable doc="No change" multi="False" name="condition" type="string">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="Général" name="general"> <family doc="Général" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="string"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="string">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice"> <variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice"> <variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice"> <variable doc="leader" multi="True" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="True" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="True" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="Description" multi="submulti" name="mode_conteneur_actif" type="choice"> <variable doc="Description" multi="submulti" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

@ -0,0 +1,32 @@
<?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="enumfam" mode="expert">
<variable name="enumvar" type="string" description="multi">
<value>b</value>
</variable>
</family>
<separators/>
</variables>
<constraints>
<check name="valid_enum" target="enumvar">
<param>['a','b','']</param>
</check>
</constraints>
<help>
<variable name="enumvar">bla bla bla</variable>
</help>
</rougail>
<!-- vim: ts=4 sw=4 expandtab
-->

View File

@ -0,0 +1 @@
{"rougail.general.mode_conteneur_actif": "non", "rougail.enumfam.enumvar": "b"}

View File

@ -0,0 +1,27 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail>
<family doc="rougail" name="rougail">
<family doc="general" name="general">
<property>expert</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>expert</property>
<value type="string">non</value>
</variable>
</family>
<family doc="enumfam" name="enumfam">
<property>expert</property>
<variable doc="multi" help="bla bla bla" multi="False" name="enumvar" type="choice">
<choice type="string">a</choice>
<choice type="string">b</choice>
<choice type="string"></choice>
<property>mandatory</property>
<property>expert</property>
<value type="string">b</value>
</variable>
</family>
<separators/>
</family>
</rougail>

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>expert</property> <property>expert</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice"> <variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

View File

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

View File

@ -1,35 +1,29 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="test"> <property>hidden</property>
<family doc="files" name="files"> <family doc="test" name="test">
<family doc="file0" name="file0"> <family name="files" doc="files">
<family doc="file" name="file">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/etc/file</value> <value>/etc/file</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file</value> <value>file</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>hidden</property>
<property expected="oui" inverse="False" source="rougail.general.condition" type="calculation">disabled</property> <property expected="oui" inverse="False" source="rougail.general.condition" type="calculation">disabled</property>
<value>True</value> <value>True</value>
</variable> </variable>
@ -37,7 +31,7 @@
</family> </family>
</family> </family>
</family> </family>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

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

View File

@ -1,35 +1,29 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="test"> <property>hidden</property>
<family doc="files" name="files"> <family doc="test" name="test">
<family doc="file0" name="file0"> <family name="files" doc="files">
<family doc="file" name="file">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/etc/file</value> <value>/etc/file</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file</value> <value>file</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>hidden</property>
<property expected="oui" inverse="False" source="rougail.general.condition" type="calculation">disabled</property> <property expected="oui" inverse="False" source="rougail.general.condition" type="calculation">disabled</property>
<value>True</value> <value>True</value>
</variable> </variable>
@ -37,7 +31,7 @@
</family> </family>
</family> </family>
</family> </family>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1 +1 @@
{"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file1", "services.service0.files.file0.owner": "root", "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.mode": "0644", "services.service0.files.file1.name": "/tmp/file2", "services.service0.files.file1.owner": "root", "services.service0.files.file1.source": "file2", "services.service0.files.file1.templating": true, "services.service0.files.file1.activate": true} {"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.test.files.file1.group": "root", "services.test.files.file1.mode": "0644", "services.test.files.file1.name": "/tmp/file1", "services.test.files.file1.owner": "root", "services.test.files.file1.source": "file1", "services.test.files.file1.templating": true, "services.test.files.file1.activate": true, "services.test.files.file2.group": "root", "services.test.files.file2.mode": "0644", "services.test.files.file2.name": "/tmp/file2", "services.test.files.file2.owner": "root", "services.test.files.file2.source": "file2", "services.test.files.file2.templating": true, "services.test.files.file2.activate": true}

View File

@ -1,66 +1,53 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="test"> <property>hidden</property>
<family doc="files" name="files"> <family doc="test" name="test">
<family doc="file0" name="file0"> <family name="files" doc="files">
<family doc="file1" name="file1">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/tmp/file1</value> <value>/tmp/file1</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file1</value> <value>file1</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>hidden</property>
<property expected="oui" inverse="False" source="rougail.general.condition" type="calculation">disabled</property> <property expected="oui" inverse="False" source="rougail.general.condition" type="calculation">disabled</property>
<value>True</value> <value>True</value>
</variable> </variable>
</family> </family>
<family doc="file1" name="file1"> <family doc="file2" name="file2">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/tmp/file2</value> <value>/tmp/file2</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file2</value> <value>file2</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>hidden</property>
<property expected="oui" inverse="False" source="rougail.general.condition" type="calculation">disabled</property> <property expected="oui" inverse="False" source="rougail.general.condition" type="calculation">disabled</property>
<value>True</value> <value>True</value>
</variable> </variable>
@ -68,7 +55,7 @@
</family> </family>
</family> </family>
</family> </family>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1 +1 @@
{"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.source": "file", "services.service0.files.file0.templating": true} {"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.test.files.file.group": "root", "services.test.files.file.mode": "0644", "services.test.files.file.name": "/tmp/file", "services.test.files.file.owner": "root", "services.test.files.file.source": "file", "services.test.files.file.templating": true}

View File

@ -1,43 +1,37 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="test"> <property>hidden</property>
<family doc="files" name="files"> <family doc="test" name="test">
<family doc="file0" name="file0"> <family name="files" doc="files">
<family doc="file" name="file">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/tmp/file</value> <value>/tmp/file</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file</value> <value>file</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>disabled</property> <property>disabled</property>
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
</family> </family>
</family> </family>
</family> </family>
</family> </family>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1 +1 @@
{"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.source": "file", "services.service0.files.file0.templating": true} {"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.test.files.file.group": "root", "services.test.files.file.mode": "0644", "services.test.files.file.name": "/tmp/file", "services.test.files.file.owner": "root", "services.test.files.file.source": "file", "services.test.files.file.templating": true}

View File

@ -1,43 +1,37 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="test"> <property>hidden</property>
<family doc="files" name="files"> <family doc="test" name="test">
<family doc="file0" name="file0"> <family name="files" doc="files">
<family doc="file" name="file">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/tmp/file</value> <value>/tmp/file</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file</value> <value>file</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>disabled</property> <property>disabled</property>
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
</family> </family>
</family> </family>
</family> </family>
</family> </family>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1 +1 @@
{"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.source": "file", "services.service0.files.file0.templating": true} {"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.test.files.file.group": "root", "services.test.files.file.mode": "0644", "services.test.files.file.name": "/tmp/file", "services.test.files.file.owner": "root", "services.test.files.file.source": "file", "services.test.files.file.templating": true}

View File

@ -1,43 +1,37 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="test"> <property>hidden</property>
<family doc="files" name="files"> <family doc="test" name="test">
<family doc="file0" name="file0"> <family name="files" doc="files">
<family doc="file" name="file">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/tmp/file</value> <value>/tmp/file</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file</value> <value>file</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>disabled</property> <property>disabled</property>
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
</family> </family>
</family> </family>
</family> </family>
</family> </family>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1 +1 @@
{"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file", "services.service0.files.file0.owner": "root", "services.service0.files.file0.source": "file", "services.service0.files.file0.templating": true} {"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.test.files.file.group": "root", "services.test.files.file.mode": "0644", "services.test.files.file.name": "/tmp/file", "services.test.files.file.owner": "root", "services.test.files.file.source": "file", "services.test.files.file.templating": true}

View File

@ -1,35 +1,29 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="test"> <property>hidden</property>
<family doc="files" name="files"> <family doc="test" name="test">
<family doc="file0" name="file0"> <family name="files" doc="files">
<family doc="file" name="file">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/tmp/file</value> <value>/tmp/file</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file</value> <value>file</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>hidden</property>
<property expected="statique" inverse="True" source="rougail.general.condition" type="calculation">disabled</property> <property expected="statique" inverse="True" source="rougail.general.condition" type="calculation">disabled</property>
<value>True</value> <value>True</value>
</variable> </variable>
@ -37,7 +31,7 @@
</family> </family>
</family> </family>
</family> </family>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" name="general"> <family doc="general" name="general">
<property>normal</property> <property>normal</property>
<variable doc="No change" multi="False" name="condition" type="choice"> <variable doc="No change" multi="False" name="condition" type="choice">

View File

@ -1 +1 @@
{"rougail.general.mode_conteneur_actif": "non", "rougail.general.condition": "non", "services.service0.files.file0.group": "root", "services.service0.files.file0.mode": "0644", "services.service0.files.file0.name": "/tmp/file1", "services.service0.files.file0.owner": "root", "services.service0.files.file0.source": "file1", "services.service0.files.file0.templating": true} {"rougail.general.mode_conteneur_actif": "non", "rougail.general.condition": "non", "services.test.files.file1.group": "root", "services.test.files.file1.mode": "0644", "services.test.files.file1.name": "/tmp/file1", "services.test.files.file1.owner": "root", "services.test.files.file1.source": "file1", "services.test.files.file1.templating": true}

View File

@ -1,43 +1,37 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail> <rougail>
<family name="services"> <family name="services" doc="services">
<family name="service0" doc="test"> <property>hidden</property>
<family doc="files" name="files"> <family doc="test" name="test">
<family doc="file0" name="file0"> <family name="files" doc="files">
<family doc="file1" name="file1">
<variable doc="group" multi="False" name="group" type="string"> <variable doc="group" multi="False" name="group" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="mode" multi="False" name="mode" type="string"> <variable doc="mode" multi="False" name="mode" type="string">
<property>hidden</property>
<value>0644</value> <value>0644</value>
</variable> </variable>
<variable doc="name" multi="False" name="name" type="string"> <variable doc="name" multi="False" name="name" type="string">
<property>hidden</property>
<value>/tmp/file1</value> <value>/tmp/file1</value>
</variable> </variable>
<variable doc="owner" multi="False" name="owner" type="string"> <variable doc="owner" multi="False" name="owner" type="string">
<property>hidden</property>
<value>root</value> <value>root</value>
</variable> </variable>
<variable doc="source" multi="False" name="source" type="string"> <variable doc="source" multi="False" name="source" type="string">
<property>hidden</property>
<value>file1</value> <value>file1</value>
</variable> </variable>
<variable doc="templating" multi="False" name="templating" type="boolean"> <variable doc="templating" multi="False" name="templating" type="boolean">
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
<variable doc="activate" multi="False" name="activate" type="boolean"> <variable doc="activate" multi="False" name="activate" type="boolean">
<property>disabled</property> <property>disabled</property>
<property>hidden</property>
<value>True</value> <value>True</value>
</variable> </variable>
</family> </family>
</family> </family>
</family> </family>
</family> </family>
<family doc="" name="rougail"> <family doc="rougail" name="rougail">
<family doc="general" 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="mode_conteneur_actif" type="choice">

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