Compare commits

...

3 commits

Author SHA1 Message Date
Emmanuel Garette
ea8bc3f02e add index function in leader 2022-05-22 19:17:35 +02:00
Emmanuel Garette
366ab9918b allow redefine 'multi' attribute 2022-05-22 18:50:34 +02:00
Emmanuel Garette
7409062d7f allow empty leadership 2022-05-22 18:49:56 +02:00
18 changed files with 111 additions and 2 deletions

View file

@ -55,6 +55,8 @@ class Annotator(Walk):
if hasattr(family, 'dynamic'):
msg = _(f'the family "{family.name}" cannot be leadership and dynamic together')
raise DictConsistencyError(msg, 31, family.xmlfiles)
if not hasattr(family, 'variable'):
continue
for idx, variable in enumerate(family.variable.values()):
if idx == 0:
# it's a leader

View file

@ -38,7 +38,7 @@ FORCE_REDEFINABLES = ('family', 'follower', 'service', 'disknod', 'variables')
# RougailObjSpace's elements that shall be forced to the UnRedefinable type
FORCE_UNREDEFINABLES = ('value',)
# RougailObjSpace's elements that shall not be modify
UNREDEFINABLE = ('multi', 'type',)
UNREDEFINABLE = ('type',)
# RougailObjSpace's elements that did not created automaticly
FORCE_ELEMENTS = ('property_', 'information')
# XML text are convert has name

View file

@ -169,6 +169,9 @@ class RougailLeader:
value = err
self._follower[name].append(value)
def index(self, value):
return self._value.index(value)
class RougailExtra:
"""Object that implement access to extra variable
@ -310,6 +313,8 @@ class RougailBaseTemplate:
destfilename = join(self.destinations_dir, true_destfilename[1:])
makedirs(dirname(destfilename), exist_ok=True)
self.log.info(_(f"{filevar['engine']} processing: '{destfilename}'"))
if isfile(destfilename):
raise TemplateError(_(f'destination file "{destfilename}" already exists'))
self.engines[filevar['engine']].process(filename=filename,
source=source,
true_destfilename=true_destfilename,

View file

@ -0,0 +1,11 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.10">
<services>
<service name="tata">
</service>
</services>
<variables>
<family name="empty_leader" leadership="True">
</family>
</variables>
</rougail>

View file

@ -0,0 +1,10 @@
{
"services.tata_service.activate": {
"owner": "default",
"value": true
},
"services.tata_service.manage": {
"owner": "default",
"value": true
}
}

View file

@ -0,0 +1,4 @@
{
"services.tata_service.activate": true,
"services.tata_service.manage": true
}

View file

@ -0,0 +1,10 @@
{
"services.tata_service.activate": {
"owner": "default",
"value": true
},
"services.tata_service.manage": {
"owner": "default",
"value": true
}
}

View file

@ -0,0 +1,22 @@
from importlib.machinery import SourceFileLoader as _SourceFileLoader
from importlib.util import spec_from_loader as _spec_from_loader, module_from_spec as _module_from_spec
class func:
pass
_loader = _SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
_spec = _spec_from_loader(_loader.name, _loader)
_func = _module_from_spec(_spec)
_loader.exec_module(_func)
for function in dir(_func):
if function.startswith('_'):
continue
setattr(func, function, getattr(_func, function))
try:
from tiramisu3 import *
except:
from tiramisu import *
option_1 = OptionDescription(name="rougail", doc="rougail", children=[])
option_4 = BoolOption(name="activate", doc="activate", default=True)
option_5 = BoolOption(name="manage", doc="manage", default=True)
option_3 = OptionDescription(name="tata_service", doc="tata.service", children=[option_4, option_5])
option_2 = OptionDescription(name="services", doc="services", children=[option_3], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_2])

View file

@ -0,0 +1,8 @@
{
"rougail.general.mode_conteneur_actif": {
"owner": "default",
"value": [
"non"
]
}
}

View file

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

View file

@ -0,0 +1,8 @@
{
"rougail.general.mode_conteneur_actif": {
"owner": "default",
"value": [
"non"
]
}
}

View file

@ -0,0 +1,20 @@
from importlib.machinery import SourceFileLoader as _SourceFileLoader
from importlib.util import spec_from_loader as _spec_from_loader, module_from_spec as _module_from_spec
class func:
pass
_loader = _SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
_spec = _spec_from_loader(_loader.name, _loader)
_func = _module_from_spec(_spec)
_loader.exec_module(_func)
for function in dir(_func):
if function.startswith('_'):
continue
setattr(func, function, getattr(_func, function))
try:
from tiramisu3 import *
except:
from tiramisu import *
option_3 = StrOption(name="mode_conteneur_actif", doc="Redefine description", multi=True, default=['non'], default_multi="non", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
option_2 = OptionDescription(name="general", doc="general", children=[option_3], properties=frozenset({"normal"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View file

@ -9,3 +9,4 @@ testpre
pretest
leader2: test
follower2: pre
index: 0

View file

@ -9,3 +9,4 @@ testpre
pretest
leader2: test
follower2: pre
index: 0

View file

@ -33,3 +33,4 @@ diff
%end for
leader2: %%extra.ejabberd.new_name.description[0].description
follower2: %%extra.ejabberd.new_name.description[0].mode
index: %%extra.ejabberd.new_name.description.index('test')

View file

@ -31,3 +31,4 @@ diff
{% endfor -%}
leader2: {{ extra.ejabberd.new_name.description[0].description }}
follower2: {{ extra.ejabberd.new_name.description[0].mode }}
index: {{ extra.ejabberd.new_name.description.index('test') }}

View file

@ -29,7 +29,7 @@ excludes = set([])
#excludes = set(['01base_file_utfchar'])
test_ok -= excludes
test_raise -= excludes
#test_ok = ['00load_autofreeze']
#test_ok = ['70container_filesredefine']
#test_ok = []
#test_raise = ['80auto_autofreeze']
#test_raise = []