feature(api) cfg.option(xxxx).option.yyy() => cfg.option(xxxx).yyy()

This commit is contained in:
egarette@silique.fr 2023-05-16 22:50:38 +02:00
parent fe2b6fb6a2
commit 0a4e1445db
16 changed files with 268 additions and 263 deletions

View file

@ -74,9 +74,9 @@ def _autocheck_default_value(cfg, path, conf, **kwargs):
"""set and get values """set and get values
""" """
# check if is a multi, a leader or a follower # check if is a multi, a leader or a follower
multi = cfg.unrestraint.option(path).option.ismulti() multi = cfg.unrestraint.option(path).ismulti()
submulti_ = cfg.unrestraint.option(path).option.issubmulti() submulti_ = cfg.unrestraint.option(path).issubmulti()
isfollower = cfg.unrestraint.option(path).option.isfollower() isfollower = cfg.unrestraint.option(path).isfollower()
# set default value (different if value is multi or not) # set default value (different if value is multi or not)
empty_value = kwargs['default'] empty_value = kwargs['default']
@ -121,10 +121,10 @@ def _autocheck_default_value(cfg, path, conf, **kwargs):
def _set_value(cfg, pathwrite, conf, **kwargs): def _set_value(cfg, pathwrite, conf, **kwargs):
set_permissive = kwargs.get('set_permissive', True) set_permissive = kwargs.get('set_permissive', True)
multi = cfg.unrestraint.option(pathwrite).option.ismulti() multi = cfg.unrestraint.option(pathwrite).ismulti()
submulti_ = cfg.unrestraint.option(pathwrite).option.issubmulti() submulti_ = cfg.unrestraint.option(pathwrite).issubmulti()
isleader = cfg.unrestraint.option(pathwrite).option.isleader() isleader = cfg.unrestraint.option(pathwrite).isleader()
isfollower = cfg.unrestraint.option(pathwrite).option.isfollower() isfollower = cfg.unrestraint.option(pathwrite).isfollower()
if not multi: if not multi:
first_value = FIRST_VALUE first_value = FIRST_VALUE
elif submulti_ is False: elif submulti_ is False:
@ -226,7 +226,7 @@ def _check_properties(cfg, mcfg, pathread, conf, kwargs, props_permissive, props
cfg_ = cfg.config(conf) cfg_ = cfg.config(conf)
else: else:
cfg_ = cfg cfg_ = cfg
if not cfg.unrestraint.option(pathread).option.isfollower(): if not cfg.unrestraint.option(pathread).isfollower():
if not kwargs.get('permissive_od', False): if not kwargs.get('permissive_od', False):
assert set(cfg_.option(pathread).property.get()) == set(props_permissive) assert set(cfg_.option(pathread).property.get()) == set(props_permissive)
assert set(cfg_.option(pathread).property.get()) == set(props) assert set(cfg_.option(pathread).property.get()) == set(props)
@ -267,8 +267,8 @@ def _check_properties(cfg, mcfg, pathread, conf, kwargs, props_permissive, props
def _property_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def _property_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
# check if is a multi or a follower # check if is a multi or a follower
multi = cfg.unrestraint.option(pathread).option.ismulti() multi = cfg.unrestraint.option(pathread).ismulti()
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
# define properties # define properties
properties = copy(PROPERTIES_LIST) properties = copy(PROPERTIES_LIST)
@ -309,9 +309,9 @@ def _property_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **
def _autocheck_get_value(cfg, pathread, conf, **kwargs): def _autocheck_get_value(cfg, pathread, conf, **kwargs):
set_permissive = kwargs.get('set_permissive', True) set_permissive = kwargs.get('set_permissive', True)
multi = cfg.unrestraint.option(pathread).option.ismulti() multi = cfg.unrestraint.option(pathread).ismulti()
submulti_ = cfg.unrestraint.option(pathread).option.issubmulti() submulti_ = cfg.unrestraint.option(pathread).issubmulti()
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
empty_value = kwargs['default'] empty_value = kwargs['default']
if not multi: if not multi:
first_value = FIRST_VALUE first_value = FIRST_VALUE
@ -371,7 +371,7 @@ def _autocheck_get_value(cfg, pathread, conf, **kwargs):
def _check_owner(cfg, pathread, conf, kwargs, owner, permissive_owner): def _check_owner(cfg, pathread, conf, kwargs, owner, permissive_owner):
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
if conf is not None: if conf is not None:
cfg_ = cfg.config(conf) cfg_ = cfg.config(conf)
else: else:
@ -415,24 +415,24 @@ def autocheck_option_multi(cfg, mcfg, pathread, pathwrite, confread, confwrite,
if pathwrite in ['subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubodval1.firstval1', 'subod.subsubod.third', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2']: if pathwrite in ['subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubodval1.firstval1', 'subod.subsubod.third', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2']:
return return
if not kwargs.get('permissive_od', False): if not kwargs.get('permissive_od', False):
cfg.option(pathread).option.ismulti() cfg.option(pathread).ismulti()
cfg.option(pathread).option.issubmulti() cfg.option(pathread).issubmulti()
cfg.option(pathread).option.isleader() cfg.option(pathread).isleader()
cfg.option(pathread).option.isfollower() cfg.option(pathread).isfollower()
else: else:
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.option(pathread).option.ismulti() cfg.option(pathread).ismulti()
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.option(pathread).option.issubmulti() cfg.option(pathread).issubmulti()
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.option(pathread).option.isleader() cfg.option(pathread).isleader()
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.option(pathread).option.isfollower() cfg.option(pathread).isfollower()
cfg.forcepermissive.option(pathread).option.ismulti() cfg.forcepermissive.option(pathread).ismulti()
cfg.forcepermissive.option(pathread).option.issubmulti() cfg.forcepermissive.option(pathread).issubmulti()
cfg.forcepermissive.option(pathread).option.isleader() cfg.forcepermissive.option(pathread).isleader()
cfg.forcepermissive.option(pathread).option.isfollower() cfg.forcepermissive.option(pathread).isfollower()
@ -442,7 +442,7 @@ def autocheck_default_owner(cfg, mcfg, pathread, pathwrite, confread, confwrite,
""" """
if pathwrite in ['subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2']: if pathwrite in ['subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2']:
return return
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
# check if owner is a string "default" and 'isdefault' # check if owner is a string "default" and 'isdefault'
def do(conf): def do(conf):
if conf is not None: if conf is not None:
@ -524,9 +524,9 @@ def autocheck_set_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **k
@autocheck @autocheck
def autocheck_get_value_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_get_value_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
multi = cfg.unrestraint.option(pathread).option.ismulti() multi = cfg.unrestraint.option(pathread).ismulti()
submulti_ = cfg.unrestraint.option(pathread).option.issubmulti() submulti_ = cfg.unrestraint.option(pathread).issubmulti()
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
_set_value(cfg, pathwrite, confwrite, **kwargs) _set_value(cfg, pathwrite, confwrite, **kwargs)
empty_value = kwargs['default'] empty_value = kwargs['default']
if not multi: if not multi:
@ -609,13 +609,13 @@ def autocheck_value_follower(cfg, mcfg, pathread, pathwrite, confread, confwrite
#FIXME #FIXME
if pathwrite in ['odleader.third', 'subodval1.subsubodval1.thirdval1', 'subodval2.subsubodval2.thirdval2']: if pathwrite in ['odleader.third', 'subodval1.subsubodval1.thirdval1', 'subodval2.subsubodval2.thirdval2']:
return return
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
if not isfollower: if not isfollower:
return return
if kwargs.get('propertyerror', False): if kwargs.get('propertyerror', False):
return return
submulti_ = cfg.forcepermissive.option(pathread).option.issubmulti() submulti_ = cfg.forcepermissive.option(pathread).issubmulti()
empty_value = kwargs['default'] empty_value = kwargs['default']
def do(conf): def do(conf):
@ -656,9 +656,9 @@ def autocheck_value_follower(cfg, mcfg, pathread, pathwrite, confread, confwrite
@autocheck @autocheck
def autocheck_reset_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_reset_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
# check if is a multi, a leader or a follower # check if is a multi, a leader or a follower
multi = cfg.unrestraint.option(pathread).option.ismulti() multi = cfg.unrestraint.option(pathread).ismulti()
submulti_ = cfg.unrestraint.option(pathread).option.issubmulti() submulti_ = cfg.unrestraint.option(pathread).issubmulti()
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
# set default value (different if value is multi or not) # set default value (different if value is multi or not)
if not multi: if not multi:
@ -720,8 +720,8 @@ def autocheck_reset_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, *
@autocheck @autocheck
def autocheck_append_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_append_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
isleader = cfg.unrestraint.option(pathread).option.isleader() isleader = cfg.unrestraint.option(pathread).isleader()
submulti_ = cfg.unrestraint.option(pathread).option.issubmulti() submulti_ = cfg.unrestraint.option(pathread).issubmulti()
if not isleader: if not isleader:
return return
if confread is not None: if confread is not None:
@ -766,8 +766,8 @@ def autocheck_append_value(cfg, mcfg, pathread, pathwrite, confread, confwrite,
@autocheck @autocheck
def autocheck_pop_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_pop_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
isleader = cfg.unrestraint.option(pathread).option.isleader() isleader = cfg.unrestraint.option(pathread).isleader()
submulti_ = cfg.unrestraint.option(pathread).option.issubmulti() submulti_ = cfg.unrestraint.option(pathread).issubmulti()
if not isleader: if not isleader:
return return
@ -826,7 +826,7 @@ def autocheck_pop_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **k
@autocheck @autocheck
def autocheck_reset_value_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_reset_value_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
# check if is a multi, a leader or a follower # check if is a multi, a leader or a follower
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
_set_value(cfg, pathwrite, confwrite, **kwargs) _set_value(cfg, pathwrite, confwrite, **kwargs)
# reset value with permissive # reset value with permissive
with warnings.catch_warnings(record=True) as w: with warnings.catch_warnings(record=True) as w:
@ -891,8 +891,8 @@ def autocheck_property(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kw
if pathwrite in ['odleader.first', 'subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2', 'subodval1.subsubodval1.firstval1', 'subodval1.subsubodval1.secondval1', 'subodval1.subsubodval1.thirdval1', 'subodval2.subsubodval2.firstval2', 'subodval2.subsubodval2.secondval2', 'subodval2.subsubodval2.thirdval2']: if pathwrite in ['odleader.first', 'subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2', 'subodval1.subsubodval1.firstval1', 'subodval1.subsubodval1.secondval1', 'subodval1.subsubodval1.thirdval1', 'subodval2.subsubodval2.firstval2', 'subodval2.subsubodval2.secondval2', 'subodval2.subsubodval2.thirdval2']:
return return
# check if is a multi or a follower # check if is a multi or a follower
multi = cfg.unrestraint.option(pathread).option.ismulti() multi = cfg.unrestraint.option(pathread).ismulti()
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
default_props, properties = _getproperties(multi, isfollower, kwargs) default_props, properties = _getproperties(multi, isfollower, kwargs)
@ -931,8 +931,8 @@ def autocheck_reset_property(cfg, mcfg, pathread, pathwrite, confread, confwrite
if pathwrite in ['odleader.first', 'subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2', 'subodval1.subsubodval1.firstval1', 'subodval1.subsubodval1.secondval1', 'subodval1.subsubodval1.thirdval1', 'subodval2.subsubodval2.firstval2', 'subodval2.subsubodval2.secondval2', 'subodval2.subsubodval2.thirdval2']: if pathwrite in ['odleader.first', 'subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2', 'subodval1.subsubodval1.firstval1', 'subodval1.subsubodval1.secondval1', 'subodval1.subsubodval1.thirdval1', 'subodval2.subsubodval2.firstval2', 'subodval2.subsubodval2.secondval2', 'subodval2.subsubodval2.thirdval2']:
return return
# check if is a multi or a follower # check if is a multi or a follower
multi = cfg.unrestraint.option(pathread).option.ismulti() multi = cfg.unrestraint.option(pathread).ismulti()
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
default_props, properties = _getproperties(multi, isfollower, kwargs) default_props, properties = _getproperties(multi, isfollower, kwargs)
_property_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs) _property_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs)
@ -956,8 +956,8 @@ def autocheck_reset_property_permissive(cfg, mcfg, pathread, pathwrite, confread
#FIXME #FIXME
if pathwrite in ['odleader.first', 'subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2', 'subodval1.subsubodval1.firstval1', 'subodval1.subsubodval1.secondval1', 'subodval1.subsubodval1.thirdval1', 'subodval2.subsubodval2.firstval2', 'subodval2.subsubodval2.secondval2', 'subodval2.subsubodval2.thirdval2']: if pathwrite in ['odleader.first', 'subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2', 'subodval1.subsubodval1.firstval1', 'subodval1.subsubodval1.secondval1', 'subodval1.subsubodval1.thirdval1', 'subodval2.subsubodval2.firstval2', 'subodval2.subsubodval2.secondval2', 'subodval2.subsubodval2.thirdval2']:
return return
multi = cfg.unrestraint.option(pathread).option.ismulti() multi = cfg.unrestraint.option(pathread).ismulti()
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
default_props, properties = _getproperties(multi, isfollower, kwargs) default_props, properties = _getproperties(multi, isfollower, kwargs)
_property_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs) _property_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs)
@ -989,7 +989,7 @@ def autocheck_owner_with_value(cfg, mcfg, pathread, pathwrite, confread, confwri
@autocheck @autocheck
def autocheck_default_owner_with_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_default_owner_with_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
_set_value(cfg, pathwrite, confwrite, **kwargs) _set_value(cfg, pathwrite, confwrite, **kwargs)
if confwrite is not None: if confwrite is not None:
@ -1022,7 +1022,7 @@ def autocheck_default_owner_with_value(cfg, mcfg, pathread, pathwrite, confread,
@autocheck @autocheck
def autocheck_default_owner_with_value_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_default_owner_with_value_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
# check if is a isfollower # check if is a isfollower
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
_set_value(cfg, pathwrite, confwrite, **kwargs) _set_value(cfg, pathwrite, confwrite, **kwargs)
@ -1045,7 +1045,7 @@ def autocheck_default_owner_with_value_permissive(cfg, mcfg, pathread, pathwrite
@autocheck @autocheck
def autocheck_set_owner_no_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_set_owner_no_value(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
if confwrite is not None: if confwrite is not None:
cfg_ = cfg.forcepermissive.config(confwrite) cfg_ = cfg.forcepermissive.config(confwrite)
else: else:
@ -1064,7 +1064,7 @@ def autocheck_set_owner(cfg, mcfg, pathread, pathwrite, confread, confwrite, **k
# test set owner without permissive # test set owner without permissive
if pathwrite in ['subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2']: if pathwrite in ['subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2']:
return return
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
_set_value(cfg, pathwrite, confwrite, **kwargs) _set_value(cfg, pathwrite, confwrite, **kwargs)
if confwrite is not None: if confwrite is not None:
@ -1097,7 +1097,7 @@ def autocheck_set_owner(cfg, mcfg, pathread, pathwrite, confread, confwrite, **k
def autocheck_set_owner_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_set_owner_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
if pathwrite in ['subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2']: if pathwrite in ['subod.subsubod.first', 'subod.subsubod.second', 'subod.subsubod.third', 'subod.subsubodval1.firstval1', 'subod.subsubodval1.secondval1', 'subod.subsubodval1.thirdval1', 'subod.subsubodval2.firstval2', 'subod.subsubodval2.secondval2', 'subod.subsubodval2.thirdval2']:
return return
isfollower = cfg.unrestraint.option(pathread).option.isfollower() isfollower = cfg.unrestraint.option(pathread).isfollower()
_set_value(cfg, pathwrite, confwrite, **kwargs) _set_value(cfg, pathwrite, confwrite, **kwargs)
if confwrite is not None: if confwrite is not None:
@ -1131,32 +1131,32 @@ def autocheck_option(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwar
return return
expected_name = pathread.split('.')[-1] expected_name = pathread.split('.')[-1]
if not kwargs.get('permissive_od', False): if not kwargs.get('permissive_od', False):
current_name = cfg.option(pathread).option.name() current_name = cfg.option(pathread).name()
assert current_name == cfg.forcepermissive.option(pathread).option.name() assert current_name == cfg.forcepermissive.option(pathread).name()
assert current_name == cfg.unrestraint.option(pathread).option.name() assert current_name == cfg.unrestraint.option(pathread).name()
doc = cfg.option(pathread).option.doc() doc = cfg.option(pathread).doc()
assert doc == cfg.forcepermissive.option(pathread).option.doc() assert doc == cfg.forcepermissive.option(pathread).doc()
assert doc == cfg.unrestraint.option(pathread).option.doc() assert doc == cfg.unrestraint.option(pathread).doc()
elif not kwargs.get('propertyerror', False): elif not kwargs.get('propertyerror', False):
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.option(pathread).option.name() cfg.option(pathread).name()
current_name = cfg.forcepermissive.option(pathread).option.name() current_name = cfg.forcepermissive.option(pathread).name()
assert current_name == cfg.unrestraint.option(pathread).option.name() assert current_name == cfg.unrestraint.option(pathread).name()
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.option(pathread).option.doc() cfg.option(pathread).doc()
doc = cfg.forcepermissive.option(pathread).option.doc() doc = cfg.forcepermissive.option(pathread).doc()
assert doc == cfg.unrestraint.option(pathread).option.doc() assert doc == cfg.unrestraint.option(pathread).doc()
else: else:
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.option(pathread).option.name() cfg.option(pathread).name()
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.forcepermissive.option(pathread).option.name() cfg.forcepermissive.option(pathread).name()
current_name = cfg.unrestraint.option(pathread).option.name() current_name = cfg.unrestraint.option(pathread).name()
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.option(pathread).option.doc() cfg.option(pathread).doc()
with raises(PropertiesOptionError): with raises(PropertiesOptionError):
cfg.forcepermissive.option(pathread).option.doc() cfg.forcepermissive.option(pathread).doc()
doc = cfg.unrestraint.option(pathread).option.doc() doc = cfg.unrestraint.option(pathread).doc()
assert current_name == expected_name assert current_name == expected_name
if expected_name.endswith('val1') or expected_name.endswith('val2'): if expected_name.endswith('val1') or expected_name.endswith('val2'):
expected_name = expected_name[:-4] expected_name = expected_name[:-4]
@ -1180,7 +1180,7 @@ def autocheck_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **
else: else:
cfg2_ = cfg.unrestraint cfg2_ = cfg.unrestraint
if not cfg_.option(pathread).option.isfollower(): if not cfg_.option(pathread).isfollower():
assert cfg_.option(pathread).permissive.get() == frozenset() assert cfg_.option(pathread).permissive.get() == frozenset()
else: else:
assert cfg_.option(pathread, 0).permissive.get() == frozenset() assert cfg_.option(pathread, 0).permissive.get() == frozenset()
@ -1204,7 +1204,7 @@ def autocheck_permissive(cfg, mcfg, pathread, pathwrite, confread, confwrite, **
cfg_.option(call_path).permissive.set(frozenset(['disabled'])) cfg_.option(call_path).permissive.set(frozenset(['disabled']))
# have permissive? # have permissive?
if not cfg_.option(pathread).option.isfollower(): if not cfg_.option(pathread).isfollower():
assert cfg_.option(pathread).permissive.get() == frozenset(['disabled']) assert cfg_.option(pathread).permissive.get() == frozenset(['disabled'])
else: else:
assert cfg_.option(pathread, 0).permissive.get() == frozenset(['disabled']) assert cfg_.option(pathread, 0).permissive.get() == frozenset(['disabled'])
@ -1261,13 +1261,13 @@ def autocheck_option_get(cfg, mcfg, pathread, pathwrite, confread, confwrite, **
name = pathread.rsplit('.', 1)[1] name = pathread.rsplit('.', 1)[1]
else: else:
name = pathread name = pathread
assert cfg.unrestraint.option(pathread).option.name() == name assert cfg.unrestraint.option(pathread).name() == name
@autocheck @autocheck
def autocheck_find(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs): def autocheck_find(cfg, mcfg, pathread, pathwrite, confread, confwrite, **kwargs):
def _getoption(opt): def _getoption(opt):
opt = opt.option.get() opt = opt.get()
if opt.impl_is_dynsymlinkoption(): if opt.impl_is_dynsymlinkoption():
opt = opt.opt opt = opt.opt
return opt return opt
@ -1493,7 +1493,7 @@ def check_all(cfg, paths_, path, meta, multi, default, default_multi, require, c
else: else:
ckwargs['owner'] = OWNER ckwargs['owner'] = OWNER
if mcfg.unrestraint.option(path).option.isfollower(): if mcfg.unrestraint.option(path).isfollower():
dirname = path.rsplit('.', 1)[0] dirname = path.rsplit('.', 1)[0]
leader_path = dirname + '.first' leader_path = dirname + '.first'
leader_path_2 = None leader_path_2 = None

View file

@ -258,8 +258,8 @@ def test_get_modified_values():
od1 = OptionDescription('root', '', [d1]) od1 = OptionDescription('root', '', [d1])
cfg = Config(od1) cfg = Config(od1)
compare(cfg.value.exportation(), {}) compare(cfg.value.exportation(), {})
assert not cfg.option('od.g5').option.ismulti() assert not cfg.option('od.g5').ismulti()
assert not cfg.option('od.g5').option.issubmulti() assert not cfg.option('od.g5').issubmulti()
cfg.option('od.g5').value.set('yes') cfg.option('od.g5').value.set('yes')
compare(cfg.value.exportation(), {'od.g5': {None: ['yes', 'user']}}) compare(cfg.value.exportation(), {'od.g5': {None: ['yes', 'user']}})
cfg.option('od.g4').value.set(False) cfg.option('od.g4').value.set(False)
@ -268,7 +268,7 @@ def test_get_modified_values():
compare(cfg.value.exportation(), {'od.g5': {None: ['yes', 'user']}, 'od.g4': {None: [True, 'user']}}) compare(cfg.value.exportation(), {'od.g5': {None: ['yes', 'user']}, 'od.g4': {None: [True, 'user']}})
cfg.option('od.g4').value.reset() cfg.option('od.g4').value.reset()
compare(cfg.value.exportation(), {'od.g5': {None: ['yes', 'user']}}) compare(cfg.value.exportation(), {'od.g5': {None: ['yes', 'user']}})
assert cfg.option('od.g6').option.ismulti() assert cfg.option('od.g6').ismulti()
cfg.option('od.g6').value.set([undefined]) cfg.option('od.g6').value.set([undefined])
compare(cfg.value.exportation(), {'od.g5': {None: ['yes', 'user']}, 'od.g6': {None: [[None], 'user']}}) compare(cfg.value.exportation(), {'od.g5': {None: ['yes', 'user']}, 'od.g6': {None: [[None], 'user']}})
cfg.option('od.g6').value.set([]) cfg.option('od.g6').value.set([])
@ -410,10 +410,10 @@ def test_config_od_name(config_type):
o2 = OptionDescription('val', '', [o]) o2 = OptionDescription('val', '', [o])
cfg = Config(o2) cfg = Config(o2)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert cfg.option('val.i').option.name() == 'i' assert cfg.option('val.i').name() == 'i'
assert cfg.option('val.s').option.name() == 's' assert cfg.option('val.s').name() == 's'
assert cfg.option('val.s').option.type() == _('integer') assert cfg.option('val.s').type() == _('integer')
assert cfg.option('val').option.type() == 'optiondescription' assert cfg.option('val').type() == 'optiondescription'
# assert not list_sessions() # assert not list_sessions()
@ -423,8 +423,8 @@ def test_config_od_type(config_type):
o2 = OptionDescription('val', '', [o]) o2 = OptionDescription('val', '', [o])
cfg = Config(o2) cfg = Config(o2)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert cfg.option('val').option.type() == 'optiondescription' assert cfg.option('val').type() == 'optiondescription'
assert cfg.option('val.i').option.type() == _('integer') assert cfg.option('val.i').type() == _('integer')
# assert not list_sessions() # assert not list_sessions()

View file

@ -179,95 +179,95 @@ def test_find_in_config():
cfg.permissive.add('hidden') cfg.permissive.add('hidden')
ret = list(cfg.option.find('dummy')) ret = list(cfg.option.find('dummy'))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.option('gc.dummy').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.dummy').get())
# #
ret_find = cfg.option.find('dummy', first=True) ret_find = cfg.option.find('dummy', first=True)
ret = ret_find.option.get() ret = ret_find.get()
_is_same_opt(ret, cfg.option('gc.dummy').option.get()) _is_same_opt(ret, cfg.option('gc.dummy').get())
# #
ret = list(cfg.option.find('float')) ret = list(cfg.option.find('float'))
assert len(ret) == 2 assert len(ret) == 2
_is_same_opt(ret[0].option.get(), cfg.option('gc.float').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.float').get())
_is_same_opt(ret[1].option.get(), cfg.option('float').option.get()) _is_same_opt(ret[1].get(), cfg.option('float').get())
# #
ret = cfg.option.find('bool', first=True) ret = cfg.option.find('bool', first=True)
_is_same_opt(ret.option.get(), cfg.option('gc.gc2.bool').option.get()) _is_same_opt(ret.get(), cfg.option('gc.gc2.bool').get())
ret = cfg.option.find('bool', value=True, first=True) ret = cfg.option.find('bool', value=True, first=True)
_is_same_opt(ret.option.get(), cfg.option('bool').option.get()) _is_same_opt(ret.get(), cfg.option('bool').get())
ret = cfg.option.find('dummy', first=True) ret = cfg.option.find('dummy', first=True)
_is_same_opt(ret.option.get(), cfg.option('gc.dummy').option.get()) _is_same_opt(ret.get(), cfg.option('gc.dummy').get())
ret = cfg.option.find('float', first=True) ret = cfg.option.find('float', first=True)
_is_same_opt(ret.option.get(), cfg.option('gc.float').option.get()) _is_same_opt(ret.get(), cfg.option('gc.float').get())
ret = list(cfg.option.find('prop')) ret = list(cfg.option.find('prop'))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.option('gc.prop').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.prop').get())
# #
ret = list(cfg.option.find('prop', value=None)) ret = list(cfg.option.find('prop', value=None))
assert len(ret) == 1 assert len(ret) == 1
ret = list(cfg.option.find('prop')) ret = list(cfg.option.find('prop'))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.option('gc.prop').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.prop').get())
# #
cfg.property.read_write() cfg.property.read_write()
with raises(AttributeError): with raises(AttributeError):
ret = cfg.option.find('prop') ret = cfg.option.find('prop')
assert ret.option.get() assert ret.get()
ret = list(cfg.unrestraint.option.find(name='prop')) ret = list(cfg.unrestraint.option.find(name='prop'))
assert len(ret) == 2 assert len(ret) == 2
_is_same_opt(ret[0].option.get(), cfg.unrestraint.option('gc.gc2.prop').option.get()) _is_same_opt(ret[0].get(), cfg.unrestraint.option('gc.gc2.prop').get())
_is_same_opt(ret[1].option.get(), cfg.forcepermissive.option('gc.prop').option.get()) _is_same_opt(ret[1].get(), cfg.forcepermissive.option('gc.prop').get())
# #
ret = list(cfg.forcepermissive.option.find('prop')) ret = list(cfg.forcepermissive.option.find('prop'))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.forcepermissive.option('gc.prop').option.get()) _is_same_opt(ret[0].get(), cfg.forcepermissive.option('gc.prop').get())
# #
ret = cfg.forcepermissive.option.find('prop', first=True) ret = cfg.forcepermissive.option.find('prop', first=True)
_is_same_opt(ret.option.get(), cfg.forcepermissive.option('gc.prop').option.get()) _is_same_opt(ret.get(), cfg.forcepermissive.option('gc.prop').get())
# combinaison of filters # combinaison of filters
ret = list(cfg.unrestraint.option.find('prop', type=BoolOption)) ret = list(cfg.unrestraint.option.find('prop', type=BoolOption))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.unrestraint.option('gc.gc2.prop').option.get()) _is_same_opt(ret[0].get(), cfg.unrestraint.option('gc.gc2.prop').get())
ret = cfg.unrestraint.option.find('prop', type=BoolOption, first=True) ret = cfg.unrestraint.option.find('prop', type=BoolOption, first=True)
_is_same_opt(ret.option.get(), cfg.unrestraint.option('gc.gc2.prop').option.get()) _is_same_opt(ret.get(), cfg.unrestraint.option('gc.gc2.prop').get())
# #
ret = list(cfg.option.find('dummy', value=False)) ret = list(cfg.option.find('dummy', value=False))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.option('gc.dummy').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.dummy').get())
# #
ret = cfg.option.find('dummy', value=False, first=True) ret = cfg.option.find('dummy', value=False, first=True)
_is_same_opt(ret.option.get(), cfg.option('gc.dummy').option.get()) _is_same_opt(ret.get(), cfg.option('gc.dummy').get())
#subcfgig #subcfgig
ret = list(cfg.option('gc').find('dummy')) ret = list(cfg.option('gc').find('dummy'))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.option('gc.dummy').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.dummy').get())
# #
ret = list(cfg.option('gc').find('float')) ret = list(cfg.option('gc').find('float'))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.option('gc.float').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.float').get())
# #
ret = list(cfg.option('gc.gc2').find('bool')) ret = list(cfg.option('gc.gc2').find('bool'))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.option('gc.gc2.bool').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.gc2.bool').get())
ret = cfg.option('gc').find('bool', value=False, first=True) ret = cfg.option('gc').find('bool', value=False, first=True)
_is_same_opt(ret.option.get(), cfg.option('gc.gc2.bool').option.get()) _is_same_opt(ret.get(), cfg.option('gc.gc2.bool').get())
# #
with raises(AttributeError): with raises(AttributeError):
ret = cfg.option('gc').find('bool', value=True, first=True) ret = cfg.option('gc').find('bool', value=True, first=True)
assert ret.option.get() assert ret.get()
# #
with raises(AttributeError): with raises(AttributeError):
ret = cfg.option('gc').find('wantref') ret = cfg.option('gc').find('wantref')
ret.option.get() ret.get()
# #
ret = list(cfg.unrestraint.option('gc').find('prop')) ret = list(cfg.unrestraint.option('gc').find('prop'))
assert len(ret) == 2 assert len(ret) == 2
_is_same_opt(ret[0].option.get(), cfg.unrestraint.option('gc.gc2.prop').option.get()) _is_same_opt(ret[0].get(), cfg.unrestraint.option('gc.gc2.prop').get())
_is_same_opt(ret[1].option.get(), cfg.forcepermissive.option('gc.prop').option.get()) _is_same_opt(ret[1].get(), cfg.forcepermissive.option('gc.prop').get())
# #
cfg.property.read_only() cfg.property.read_only()
ret = list(cfg.option('gc').find('prop')) ret = list(cfg.option('gc').find('prop'))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), cfg.option('gc.prop').option.get()) _is_same_opt(ret[0].get(), cfg.option('gc.prop').get())
# not OptionDescription # not OptionDescription
with raises(AttributeError): with raises(AttributeError):
cfg.option.find('gc', first=True) cfg.option.find('gc', first=True)
@ -298,9 +298,9 @@ def test_find_multi():
cfg.option('bool').value.set([False, False, True]) cfg.option('bool').value.set([False, False, True])
ret = list(cfg.option.find('bool', value=True)) ret = list(cfg.option.find('bool', value=True))
assert len(ret) == 1 assert len(ret) == 1
_is_same_opt(ret[0].option.get(), b) _is_same_opt(ret[0].get(), b)
ret = cfg.option.find('bool', value=True, first=True) ret = cfg.option.find('bool', value=True, first=True)
_is_same_opt(ret.option.get(), b) _is_same_opt(ret.get(), b)
# assert not list_sessions() # assert not list_sessions()

View file

@ -68,8 +68,8 @@ def test_build_dyndescription():
od1 = OptionDescription('od', '', [dod]) od1 = OptionDescription('od', '', [dod])
cfg = Config(od1) cfg = Config(od1)
assert cfg.value.dict() == {'dodval1.stval1': None, 'dodval2.stval2': None} assert cfg.value.dict() == {'dodval1.stval1': None, 'dodval2.stval2': None}
assert cfg.option('dodval1').option.isdynamic() assert cfg.option('dodval1').isdynamic()
assert cfg.option('dodval1.stval1').option.isdynamic() assert cfg.option('dodval1.stval1').isdynamic()
# assert not list_sessions() # assert not list_sessions()
@ -155,14 +155,14 @@ def test_getdoc_dyndescription():
od1 = OptionDescription('od', '', [dod]) od1 = OptionDescription('od', '', [dod])
od2 = OptionDescription('od', '', [od1]) od2 = OptionDescription('od', '', [od1])
cfg = Config(od2) cfg = Config(od2)
assert cfg.option('od.dodval1.stval1').option.name() == 'stval1' assert cfg.option('od.dodval1.stval1').name() == 'stval1'
assert cfg.option('od.dodval2.stval2').option.name() == 'stval2' assert cfg.option('od.dodval2.stval2').name() == 'stval2'
assert cfg.option('od.dodval1').option.name() == 'dodval1' assert cfg.option('od.dodval1').name() == 'dodval1'
assert cfg.option('od.dodval2').option.name() == 'dodval2' assert cfg.option('od.dodval2').name() == 'dodval2'
assert cfg.option('od.dodval1.stval1').option.doc() == 'doc1val1' assert cfg.option('od.dodval1.stval1').doc() == 'doc1val1'
assert cfg.option('od.dodval2.stval2').option.doc() == 'doc1val2' assert cfg.option('od.dodval2.stval2').doc() == 'doc1val2'
assert cfg.option('od.dodval1').option.doc() == 'doc2val1' assert cfg.option('od.dodval1').doc() == 'doc2val1'
assert cfg.option('od.dodval2').option.doc() == 'doc2val2' assert cfg.option('od.dodval2').doc() == 'doc2val2'
# assert not list_sessions() # assert not list_sessions()
@ -964,7 +964,7 @@ def test_find_dyndescription_context():
ret = cfg.option.find('stval1', first=True) ret = cfg.option.find('stval1', first=True)
assert ret.value.get() == "yes" assert ret.value.get() == "yes"
ret = cfg.option.find('stval1', first=True) ret = cfg.option.find('stval1', first=True)
assert isinstance(ret.option.get(), SynDynOption) assert isinstance(ret.get(), SynDynOption)
#assert cfg.option.find(bytype=StrOption, type='path') == ['od.dodval1.stval1', 'od.dodval2.stval2', 'od.val1'] #assert cfg.option.find(bytype=StrOption, type='path') == ['od.dodval1.stval1', 'od.dodval2.stval2', 'od.val1']
#opts = cfg.option.find(byvalue='yes') #opts = cfg.option.find(byvalue='yes')
#assert len(opts) == 1 #assert len(opts) == 1
@ -1859,8 +1859,8 @@ def test_dyn_symlink():
od1 = OptionDescription(name="accounts", doc="accounts.remote_.remote_ip_", children=[remotes, dyn_remote, name]) od1 = OptionDescription(name="accounts", doc="accounts.remote_.remote_ip_", children=[remotes, dyn_remote, name])
cfg = Config(od1) cfg = Config(od1)
assert cfg.option('name').value.get() == ['a', 'b', 'c'] assert cfg.option('name').value.get() == ['a', 'b', 'c']
assert cfg.option('name').option.ismulti() == True assert cfg.option('name').ismulti() == True
assert cfg.option('name').option.issubmulti() == False assert cfg.option('name').issubmulti() == False
assert cfg.value.dict() == {'remotes': ['a', 'b', 'c'], 'remote_a.remote_ip_a': 'a', 'remote_b.remote_ip_b': 'b', 'remote_c.remote_ip_c': 'c', 'name': ['a', 'b', 'c']} assert cfg.value.dict() == {'remotes': ['a', 'b', 'c'], 'remote_a.remote_ip_a': 'a', 'remote_b.remote_ip_b': 'b', 'remote_c.remote_ip_c': 'c', 'name': ['a', 'b', 'c']}
# assert not list_sessions() # assert not list_sessions()
@ -1873,7 +1873,7 @@ def test_dyn_callback_with_not_dyn():
od1 = OptionDescription(name="accounts", doc="accounts.remote_.remote_ip_", children=[remotes, dyn_remote, names]) od1 = OptionDescription(name="accounts", doc="accounts.remote_.remote_ip_", children=[remotes, dyn_remote, names])
cfg = Config(od1) cfg = Config(od1)
assert cfg.option('names').value.get() == ['a', 'b', 'c'] assert cfg.option('names').value.get() == ['a', 'b', 'c']
assert cfg.option('names').option.ismulti() == True assert cfg.option('names').ismulti() == True
assert cfg.option('names').option.issubmulti() == False assert cfg.option('names').issubmulti() == False
assert cfg.value.dict() == {'remotes': ['a', 'b', 'c'], 'remote_a.remote_ip_a': 'a', 'remote_b.remote_ip_b': 'b', 'remote_c.remote_ip_c': 'c', 'names': ['a', 'b', 'c']} assert cfg.value.dict() == {'remotes': ['a', 'b', 'c'], 'remote_a.remote_ip_a': 'a', 'remote_b.remote_ip_b': 'b', 'remote_c.remote_ip_c': 'c', 'names': ['a', 'b', 'c']}
# assert not list_sessions() # assert not list_sessions()

View file

@ -86,7 +86,7 @@ def test_iter_on_groups():
result = cfg.option('creole').list('optiondescription', result = cfg.option('creole').list('optiondescription',
group_type=groups.family, group_type=groups.family,
) )
group_names = [res.option.name() for res in result] group_names = [res.name() for res in result]
assert group_names == ['general', 'interface1'] assert group_names == ['general', 'interface1']
for i in cfg.option('creole').list('optiondescription', for i in cfg.option('creole').list('optiondescription',
group_type=groups.family, group_type=groups.family,
@ -108,17 +108,17 @@ def test_list_recursive():
cfg = Config(od1) cfg = Config(od1)
cfg.property.read_write() cfg.property.read_write()
result = cfg.option('creole').list('all') result = cfg.option('creole').list('all')
group_names = [res.option.name() for res in result] group_names = [res.name() for res in result]
assert group_names == ['general', 'interface1'] assert group_names == ['general', 'interface1']
# #
result = cfg.option.list(recursive=True) result = cfg.option.list(recursive=True)
group_names = [res.option.name() for res in result] group_names = [res.name() for res in result]
assert group_names == ['numero_etab', 'nom_machine', 'nombre_interfaces', assert group_names == ['numero_etab', 'nom_machine', 'nombre_interfaces',
'activer_proxy_client', 'mode_conteneur_actif', 'activer_proxy_client', 'mode_conteneur_actif',
'serveur_ntp', 'time_zone', 'ip_admin_eth0', 'serveur_ntp', 'time_zone', 'ip_admin_eth0',
'netmask_admin_eth0'] 'netmask_admin_eth0']
result = list(cfg.option.list(recursive=True, type='optiondescription')) result = list(cfg.option.list(recursive=True, type='optiondescription'))
group_names = [res.option.name() for res in result] group_names = [res.name() for res in result]
assert group_names == ['creole', 'general', 'interface1', 'ip_admin_eth0'] assert group_names == ['creole', 'general', 'interface1', 'ip_admin_eth0']
# assert not list_sessions() # assert not list_sessions()
@ -129,14 +129,14 @@ def test_iter_on_groups_force_permissive():
cfg.property.read_write() cfg.property.read_write()
cfg.permissive.add('hidden') cfg.permissive.add('hidden')
result = cfg.forcepermissive.option('creole.general').list() result = cfg.forcepermissive.option('creole.general').list()
group_names = [res.option.name() for res in result] group_names = [res.name() for res in result]
ass = ['numero_etab', 'nom_machine', 'nombre_interfaces', ass = ['numero_etab', 'nom_machine', 'nombre_interfaces',
'activer_proxy_client', 'mode_conteneur_actif', 'activer_proxy_client', 'mode_conteneur_actif',
'mode_conteneur_actif2', 'serveur_ntp', 'time_zone'] 'mode_conteneur_actif2', 'serveur_ntp', 'time_zone']
assert group_names == ass assert group_names == ass
# mode_conteneur_actif2 is not visible is not forcepermissive # mode_conteneur_actif2 is not visible is not forcepermissive
result = cfg.option('creole.general').list() result = cfg.option('creole.general').list()
group_names = [res.option.name() for res in result] group_names = [res.name() for res in result]
ass.remove('mode_conteneur_actif2') ass.remove('mode_conteneur_actif2')
assert group_names == ass assert group_names == ass
# assert not list_sessions() # assert not list_sessions()
@ -149,7 +149,7 @@ def test_iter_group_on_groups_force_permissive():
cfg.permissive.add('hidden') cfg.permissive.add('hidden')
result = cfg.forcepermissive.option('creole').list(type='optiondescription', result = cfg.forcepermissive.option('creole').list(type='optiondescription',
group_type=groups.family) group_type=groups.family)
group_names = [res.option.name() for res in result] group_names = [res.name() for res in result]
assert group_names == ['general', 'interface1', 'new'] assert group_names == ['general', 'interface1', 'new']
# assert not list_sessions() # assert not list_sessions()
@ -161,7 +161,7 @@ def test_iter_on_groups_props():
cfg.option('creole.interface1').property.add('disabled') cfg.option('creole.interface1').property.add('disabled')
result = cfg.option('creole').list(type='optiondescription', result = cfg.option('creole').list(type='optiondescription',
group_type=groups.family) group_type=groups.family)
group_names = [res.option.name() for res in result] group_names = [res.name() for res in result]
assert group_names == ['general'] assert group_names == ['general']
# assert not list_sessions() # assert not list_sessions()
@ -201,20 +201,20 @@ def test_groups_is_leader(config_type):
od1 = OptionDescription('od', '', [interface1, od2]) od1 = OptionDescription('od', '', [interface1, od2])
cfg = Config(od1) cfg = Config(od1)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert not cfg.option('od2').option.isleadership() assert not cfg.option('od2').isleadership()
assert cfg.option('leadership').option.isleadership() assert cfg.option('leadership').isleadership()
assert not cfg.option('od2.var').option.isleader() assert not cfg.option('od2.var').isleader()
assert not cfg.option('od2.var').option.isfollower() assert not cfg.option('od2.var').isfollower()
assert cfg.option('leadership.ip_admin_eth0').option.ismulti() assert cfg.option('leadership.ip_admin_eth0').ismulti()
assert cfg.option('leadership.netmask_admin_eth0').option.ismulti() assert cfg.option('leadership.netmask_admin_eth0').ismulti()
assert not cfg.option('leadership.ip_admin_eth0').option.issubmulti() assert not cfg.option('leadership.ip_admin_eth0').issubmulti()
assert not cfg.option('leadership.netmask_admin_eth0').option.issubmulti() assert not cfg.option('leadership.netmask_admin_eth0').issubmulti()
assert cfg.option('leadership.ip_admin_eth0').option.isleader() assert cfg.option('leadership.ip_admin_eth0').isleader()
assert not cfg.option('leadership.ip_admin_eth0').option.isfollower() assert not cfg.option('leadership.ip_admin_eth0').isfollower()
assert not cfg.option('leadership.netmask_admin_eth0').option.isleader() assert not cfg.option('leadership.netmask_admin_eth0').isleader()
assert cfg.option('leadership.netmask_admin_eth0').option.isfollower() assert cfg.option('leadership.netmask_admin_eth0').isfollower()
assert cfg.option('leadership.netmask_admin_eth0').option.path() == 'leadership.netmask_admin_eth0' assert cfg.option('leadership.netmask_admin_eth0').path() == 'leadership.netmask_admin_eth0'
assert cfg.option('leadership.netmask_admin_eth0').option.defaultmulti() == 'value' assert cfg.option('leadership.netmask_admin_eth0').defaultmulti() == 'value'
if config_type == 'tiramisu-api': if config_type == 'tiramisu-api':
cfg.send() cfg.send()
# assert not list_sessions() # assert not list_sessions()
@ -229,18 +229,18 @@ def test_leader_list(config_type):
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
ret = cfg.option.list('all') ret = cfg.option.list('all')
assert len(ret) == 1 assert len(ret) == 1
assert ret[0].option.name() == 'leadership' assert ret[0].name() == 'leadership'
# #
ret = cfg.option('leadership').list('all') ret = cfg.option('leadership').list('all')
assert len(ret) == 1 assert len(ret) == 1
assert ret[0].option.name() == 'ip_admin_eth0' assert ret[0].name() == 'ip_admin_eth0'
# #
cfg.option('leadership.ip_admin_eth0').value.set(['a', 'b']) cfg.option('leadership.ip_admin_eth0').value.set(['a', 'b'])
cfg.option('leadership.netmask_admin_eth0', 0).value.set('c') cfg.option('leadership.netmask_admin_eth0', 0).value.set('c')
cfg.option('leadership.netmask_admin_eth0', 1).value.set('d') cfg.option('leadership.netmask_admin_eth0', 1).value.set('d')
ret = cfg.option('leadership').list('all') ret = cfg.option('leadership').list('all')
assert ret[0].option.name() == 'ip_admin_eth0' assert ret[0].name() == 'ip_admin_eth0'
assert ret[1].option.name() == 'netmask_admin_eth0' assert ret[1].name() == 'netmask_admin_eth0'
# assert ret[1].option.index() == 0 # assert ret[1].option.index() == 0
# assert ret[2].option.name() == 'netmask_admin_eth0' # assert ret[2].option.name() == 'netmask_admin_eth0'
# assert ret[2].option.index() == 1 # assert ret[2].option.index() == 1
@ -259,7 +259,7 @@ def test_groups_is_multi_with_index(config_type):
od1 = OptionDescription('od', '', [interface1, od2]) od1 = OptionDescription('od', '', [interface1, od2])
cfg = Config(od1) cfg = Config(od1)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert cfg.option('leadership.netmask_admin_eth0', 0).option.ismulti() assert cfg.option('leadership.netmask_admin_eth0', 0).ismulti()
def test_groups_is_information_with_index(config_type): def test_groups_is_information_with_index(config_type):
@ -964,16 +964,16 @@ def test_wrong_index():
od1 = OptionDescription('toto', '', [od2]) od1 = OptionDescription('toto', '', [od2])
cfg = Config(od1) cfg = Config(od1)
cfg.property.read_write() cfg.property.read_write()
assert cfg.option('od.ip_admin_eth0.ip_admin_eth0').option.get() assert cfg.option('od.ip_admin_eth0.ip_admin_eth0').get()
with pytest.raises(ConfigError): with pytest.raises(ConfigError):
cfg.option('od.ip_admin_eth0.ip_admin_eth0', 0).option.get() cfg.option('od.ip_admin_eth0.ip_admin_eth0', 0).get()
assert cfg.option('od.ip_admin_eth0.netmask_admin_eth0').option.get() assert cfg.option('od.ip_admin_eth0.netmask_admin_eth0').get()
assert cfg.option('od.ip_admin_eth0').option.get() assert cfg.option('od.ip_admin_eth0').get()
with pytest.raises(ConfigError): with pytest.raises(ConfigError):
cfg.option('od.ip_admin_eth0', 0).option.get() cfg.option('od.ip_admin_eth0', 0).get()
assert cfg.option('od').option.get() assert cfg.option('od').get()
with pytest.raises(ConfigError): with pytest.raises(ConfigError):
cfg.option('od', 0).option.get() cfg.option('od', 0).get()
# assert not list_sessions() # assert not list_sessions()
@ -1090,8 +1090,8 @@ def test_api_get_leader(config_type):
interface1 = Leadership('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0]) interface1 = Leadership('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
od1 = OptionDescription('conf', '', [interface1]) od1 = OptionDescription('conf', '', [interface1])
cfg = Config(od1) cfg = Config(od1)
option = cfg.option('ip_admin_eth0.netmask_admin_eth0').option.leader() option = cfg.option('ip_admin_eth0.netmask_admin_eth0').leader()
assert option.option.get() == ip_admin_eth0 assert option.get() == ip_admin_eth0
# assert not list_sessions() # assert not list_sessions()

View file

@ -324,11 +324,11 @@ def compare(ret, expected):
for index, opt in enumerate(ret): for index, opt in enumerate(ret):
exp = expected[index] exp = expected[index]
if isinstance(exp, list): if isinstance(exp, list):
assert opt.option.path() == exp[0] assert opt.path() == exp[0]
assert opt.option.index() == exp[1] assert opt.index() == exp[1]
else: else:
assert opt.option.path() == exp assert opt.path() == exp
assert opt.option.index() == None assert opt.index() == None
def test_mandatory_warnings_ro(): def test_mandatory_warnings_ro():

View file

@ -86,8 +86,8 @@ def test_option_description():
od = OptionDescription('od', 'od', [i]) od = OptionDescription('od', 'od', [i])
od2 = OptionDescription('od', '', [od]) od2 = OptionDescription('od', '', [od])
cfg = Config(od2) cfg = Config(od2)
assert cfg.option('od').option.description() == 'od' assert cfg.option('od').description() == 'od'
assert cfg.option('od.test').option.description() == description assert cfg.option('od.test').description() == description
def test_option_get_information_default(): def test_option_get_information_default():
@ -142,8 +142,8 @@ def test_option_isoptiondescription():
od = OptionDescription('od', '', [i]) od = OptionDescription('od', '', [i])
od = OptionDescription('od', '', [od]) od = OptionDescription('od', '', [od])
cfg = Config(od) cfg = Config(od)
assert cfg.option('od').option.isoptiondescription() assert cfg.option('od').isoptiondescription()
assert not cfg.option('od.test').option.isoptiondescription() assert not cfg.option('od.test').isoptiondescription()
# assert not list_sessions() # assert not list_sessions()
@ -350,5 +350,5 @@ def test_option_display_name():
cfg = Config(od, cfg = Config(od,
display_name=display_name, display_name=display_name,
) )
assert cfg.option('test1').option.name() == 'test1' assert cfg.option('test1').name() == 'test1'
assert cfg.option('test1').option.doc() == 'display_name' assert cfg.option('test1').doc() == 'display_name'

View file

@ -293,7 +293,7 @@ def test_callback(config_type):
cfg.option('val1').value.set('new-val') cfg.option('val1').value.set('new-val')
assert cfg.option('val1').value.get() == 'new-val' assert cfg.option('val1').value.get() == 'new-val'
with pytest.raises(ConfigError): with pytest.raises(ConfigError):
assert cfg.option('val1').option.defaultmulti() == None assert cfg.option('val1').defaultmulti() == None
cfg.option('val1').value.reset() cfg.option('val1').value.reset()
assert cfg.option('val1').value.get() == 'val' assert cfg.option('val1').value.get() == 'val'
# assert not list_sessions() # assert not list_sessions()
@ -519,7 +519,7 @@ def test_callback_multi(config_type):
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert cfg.option('val1').value.get() == ['val'] assert cfg.option('val1').value.get() == ['val']
cfg.option('val1').value.set(['new-val']) cfg.option('val1').value.set(['new-val'])
assert cfg.option('val1').option.defaultmulti() == None assert cfg.option('val1').defaultmulti() == None
assert cfg.option('val1').value.get() == ['new-val'] assert cfg.option('val1').value.get() == ['new-val']
cfg.option('val1').value.set(['new-val', 'new-val2']) cfg.option('val1').value.set(['new-val', 'new-val2'])
assert cfg.option('val1').value.get() == ['new-val', 'new-val2'] assert cfg.option('val1').value.get() == ['new-val', 'new-val2']
@ -1559,15 +1559,15 @@ def test_calc_dependencies(config_type):
od1 = OptionDescription('root', '', [val1, val2, val3]) od1 = OptionDescription('root', '', [val1, val2, val3])
cfg = Config(od1) cfg = Config(od1)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
dep = cfg.option('val1').option.dependencies() dep = cfg.option('val1').dependencies()
assert len(dep) == 1 assert len(dep) == 1
assert dep[0].option.get() == val3 assert dep[0].get() == val3
# #
dep = cfg.option('val2').option.dependencies() dep = cfg.option('val2').dependencies()
assert len(dep) == 1 assert len(dep) == 1
assert dep[0].option.get() == val3 assert dep[0].get() == val3
# #
assert cfg.option('val3').option.dependencies() == [] assert cfg.option('val3').dependencies() == []
def test_callback__kwargs_wrong(config_type): def test_callback__kwargs_wrong(config_type):

View file

@ -361,8 +361,8 @@ def test_apply_requires_from_config():
with pytest.raises(PropertiesOptionError): with pytest.raises(PropertiesOptionError):
cfg.option('opt.str').value.get() cfg.option('opt.str').value.get()
assert 'hidden' in cfg.forcepermissive.option('opt.str').property.get() assert 'hidden' in cfg.forcepermissive.option('opt.str').property.get()
assert 'hidden' not in cfg.forcepermissive.option('opt.str').option.properties() assert 'hidden' not in cfg.forcepermissive.option('opt.str').properties()
assert 'hidden' not in cfg.forcepermissive.option('opt.str').option.properties(only_raises=True) assert 'hidden' not in cfg.forcepermissive.option('opt.str').properties(only_raises=True)
# assert not list_sessions() # assert not list_sessions()
@ -382,8 +382,8 @@ def test_apply_requires_with_disabled():
cfg.option('int').value.set(1) cfg.option('int').value.set(1)
with pytest.raises(PropertiesOptionError): with pytest.raises(PropertiesOptionError):
cfg.option('opt.str').value.get() cfg.option('opt.str').value.get()
assert 'disabled' not in cfg.unrestraint.option('opt.str').option.properties() assert 'disabled' not in cfg.unrestraint.option('opt.str').properties()
assert 'disabled' not in cfg.unrestraint.option('opt.str').option.properties(only_raises=True) assert 'disabled' not in cfg.unrestraint.option('opt.str').properties(only_raises=True)
assert 'disabled' in cfg.unrestraint.option('opt.str').property.get() assert 'disabled' in cfg.unrestraint.option('opt.str').property.get()
# assert not list_sessions() # assert not list_sessions()
@ -499,10 +499,10 @@ def test_accepts_multiple_changes_from_option():
od1 = OptionDescription("options", "", [s]) od1 = OptionDescription("options", "", [s])
cfg = Config(od1) cfg = Config(od1)
cfg.option('string').value.set("egg") cfg.option('string').value.set("egg")
assert cfg.option('string').option.default() == "string" assert cfg.option('string').default() == "string"
assert cfg.option('string').value.get() == "egg" assert cfg.option('string').value.get() == "egg"
cfg.option('string').value.set('blah') cfg.option('string').value.set('blah')
assert cfg.option('string').option.default() == "string" assert cfg.option('string').default() == "string"
assert cfg.option('string').value.get() == "blah" assert cfg.option('string').value.get() == "blah"
cfg.option('string').value.set('bol') cfg.option('string').value.set('bol')
assert cfg.option('string').value.get() == 'bol' assert cfg.option('string').value.get() == 'bol'

View file

@ -499,13 +499,13 @@ def test_validator_dependencies():
opt2 = StrOption('opt2', '', validators=[Calculation(return_false, Params(ParamSelfOption(whole=False)))]) opt2 = StrOption('opt2', '', validators=[Calculation(return_false, Params(ParamSelfOption(whole=False)))])
od1 = OptionDescription('root', '', [ip_admin_eth0, netmask_admin_eth0, opt2]) od1 = OptionDescription('root', '', [ip_admin_eth0, netmask_admin_eth0, opt2])
cfg = Config(od1) cfg = Config(od1)
assert cfg.option('ip_admin_eth0').option.has_dependency() is False assert cfg.option('ip_admin_eth0').has_dependency() is False
assert cfg.option('netmask_admin_eth0').option.has_dependency() is True assert cfg.option('netmask_admin_eth0').has_dependency() is True
assert cfg.option('opt2').option.has_dependency() is False assert cfg.option('opt2').has_dependency() is False
# #
assert cfg.option('ip_admin_eth0').option.has_dependency(False) is True assert cfg.option('ip_admin_eth0').has_dependency(False) is True
assert cfg.option('netmask_admin_eth0').option.has_dependency(False) is False assert cfg.option('netmask_admin_eth0').has_dependency(False) is False
assert cfg.option('opt2').option.has_dependency(False) is False assert cfg.option('opt2').has_dependency(False) is False
# assert not list_sessions() # assert not list_sessions()
@ -1010,10 +1010,10 @@ def test_validator_has_dependency():
b = NetmaskOption('b', '', validators=[Calculation(valid_ip_netmask, Params((ParamOption(a), ParamSelfOption())))]) b = NetmaskOption('b', '', validators=[Calculation(valid_ip_netmask, Params((ParamOption(a), ParamSelfOption())))])
od1 = OptionDescription('od', '', [a, b]) od1 = OptionDescription('od', '', [a, b])
cfg = Config(od1) cfg = Config(od1)
assert cfg.option('a').option.has_dependency() is False assert cfg.option('a').has_dependency() is False
assert cfg.option('b').option.has_dependency() is True assert cfg.option('b').has_dependency() is True
assert cfg.option('a').option.has_dependency(False) is True assert cfg.option('a').has_dependency(False) is True
assert cfg.option('b').option.has_dependency(False) is False assert cfg.option('b').has_dependency(False) is False
# assert not list_sessions() # assert not list_sessions()
@ -1250,10 +1250,10 @@ def test_consistency_not_equal_has_dependency():
b = IntOption('b', '', validators=[Calculation(valid_not_equal, Params((ParamSelfOption(), ParamOption(a))))]) b = IntOption('b', '', validators=[Calculation(valid_not_equal, Params((ParamSelfOption(), ParamOption(a))))])
od1 = OptionDescription('od', '', [a, b]) od1 = OptionDescription('od', '', [a, b])
cfg = Config(od1) cfg = Config(od1)
assert cfg.option('a').option.has_dependency() is False assert cfg.option('a').has_dependency() is False
assert cfg.option('b').option.has_dependency() is True assert cfg.option('b').has_dependency() is True
assert cfg.option('a').option.has_dependency(False) is True assert cfg.option('a').has_dependency(False) is True
assert cfg.option('b').option.has_dependency(False) is False assert cfg.option('b').has_dependency(False) is False
# assert not list_sessions() # assert not list_sessions()

View file

@ -37,8 +37,8 @@ def test_submulti():
multi3 = StrOption('multi3', '', default=[['yes']], multi=submulti) multi3 = StrOption('multi3', '', default=[['yes']], multi=submulti)
od1 = OptionDescription('od', '', [multi, multi2, multi3]) od1 = OptionDescription('od', '', [multi, multi2, multi3])
cfg = Config(od1) cfg = Config(od1)
assert cfg.option('multi').option.ismulti() assert cfg.option('multi').ismulti()
assert cfg.option('multi').option.issubmulti() assert cfg.option('multi').issubmulti()
assert cfg.option('multi').owner.get() == owners.default assert cfg.option('multi').owner.get() == owners.default
assert cfg.option('multi').value.get() == [] assert cfg.option('multi').value.get() == []
assert cfg.option('multi').owner.get() == owners.default assert cfg.option('multi').owner.get() == owners.default

View file

@ -24,10 +24,10 @@ def test_symlink_option(config_type):
) )
cfg = Config(od1) cfg = Config(od1)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert not cfg.option('s1.b').option.issymlinkoption() assert not cfg.option('s1.b').issymlinkoption()
assert cfg.option('c').option.issymlinkoption() assert cfg.option('c').issymlinkoption()
assert cfg.option('s1.b').option.type() == _('boolean') assert cfg.option('s1.b').type() == _('boolean')
assert cfg.option('c').option.type() == _('boolean') assert cfg.option('c').type() == _('boolean')
assert cfg.option('s1.b').value.get() is False assert cfg.option('s1.b').value.get() is False
cfg.option("s1.b").value.set(True) cfg.option("s1.b").value.set(True)
cfg.option("s1.b").value.set(False) cfg.option("s1.b").value.set(False)
@ -50,21 +50,21 @@ def test_symlink_default(config_type):
) )
cfg = Config(od1) cfg = Config(od1)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert not cfg.option('s1.b').option.ismulti() assert not cfg.option('s1.b').ismulti()
assert not cfg.option('c').option.ismulti() assert not cfg.option('c').ismulti()
assert not cfg.option('s1.b').option.issubmulti() assert not cfg.option('s1.b').issubmulti()
assert not cfg.option('c').option.issubmulti() assert not cfg.option('c').issubmulti()
assert not cfg.option('s1.b').option.default() assert not cfg.option('s1.b').default()
assert not cfg.option('c').option.default() assert not cfg.option('c').default()
assert not cfg.option('s1.b').value.default() assert not cfg.option('s1.b').value.default()
assert not cfg.option('c').value.default() assert not cfg.option('c').value.default()
with pytest.raises(ConfigError): with pytest.raises(ConfigError):
assert not cfg.option('s1.b').option.defaultmulti() assert not cfg.option('s1.b').defaultmulti()
with pytest.raises(ConfigError): with pytest.raises(ConfigError):
assert not cfg.option('c').option.defaultmulti() assert not cfg.option('c').defaultmulti()
cfg.option("s1.b").value.set(True) cfg.option("s1.b").value.set(True)
assert not cfg.option('s1.b').option.default() assert not cfg.option('s1.b').default()
assert not cfg.option('c').option.default() assert not cfg.option('c').default()
assert not cfg.option('s1.b').value.default() assert not cfg.option('s1.b').value.default()
assert not cfg.option('c').value.default() assert not cfg.option('c').value.default()
## assert not list_sessions() ## assert not list_sessions()
@ -78,23 +78,23 @@ def test_symlink_default_multi(config_type):
) )
cfg = Config(od1) cfg = Config(od1)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert cfg.option('s1.b').option.ismulti() assert cfg.option('s1.b').ismulti()
assert cfg.option('c').option.ismulti() assert cfg.option('c').ismulti()
assert not cfg.option('s1.b').option.issubmulti() assert not cfg.option('s1.b').issubmulti()
assert not cfg.option('c').option.issubmulti() assert not cfg.option('c').issubmulti()
assert cfg.option('s1.b').option.default() == [False] assert cfg.option('s1.b').default() == [False]
assert cfg.option('c').option.default() == [False] assert cfg.option('c').default() == [False]
assert cfg.option('s1.b').value.default() == [False] assert cfg.option('s1.b').value.default() == [False]
assert cfg.option('c').value.default() == [False] assert cfg.option('c').value.default() == [False]
assert cfg.option('s1.b').option.defaultmulti() assert cfg.option('s1.b').defaultmulti()
assert cfg.option('c').option.defaultmulti() assert cfg.option('c').defaultmulti()
cfg.option("s1.b").value.set([True]) cfg.option("s1.b").value.set([True])
assert cfg.option('s1.b').option.default() == [False] assert cfg.option('s1.b').default() == [False]
assert cfg.option('c').option.default() == [False] assert cfg.option('c').default() == [False]
assert cfg.option('s1.b').value.default() == [False] assert cfg.option('s1.b').value.default() == [False]
assert cfg.option('c').value.default() == [False] assert cfg.option('c').value.default() == [False]
assert cfg.option('s1.b').option.defaultmulti() assert cfg.option('s1.b').defaultmulti()
assert cfg.option('c').option.defaultmulti() assert cfg.option('c').defaultmulti()
## assert not list_sessions() ## assert not list_sessions()
@ -317,7 +317,7 @@ def test_symlink_with_follower(config_type):
od1 = OptionDescription('root', '', [interface1, follower]) od1 = OptionDescription('root', '', [interface1, follower])
cfg = Config(od1) cfg = Config(od1)
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
assert not cfg.option('follower').option.isoptiondescription() assert not cfg.option('follower').isoptiondescription()
assert cfg.value.dict() == {'ip_admin_eth0.ip_admin_eth0': [], 'follower': []} assert cfg.value.dict() == {'ip_admin_eth0.ip_admin_eth0': [], 'follower': []}
cfg.option('ip_admin_eth0.ip_admin_eth0').value.set(['val1', 'val2']) cfg.option('ip_admin_eth0.ip_admin_eth0').value.set(['val1', 'val2'])
assert cfg.value.dict() == {'ip_admin_eth0.ip_admin_eth0': [{'ip_admin_eth0.ip_admin_eth0': 'val1', 'ip_admin_eth0.netmask_admin_eth0': None}, {'ip_admin_eth0.ip_admin_eth0': 'val2', 'ip_admin_eth0.netmask_admin_eth0': None}], 'follower': [None, None]} assert cfg.value.dict() == {'ip_admin_eth0.ip_admin_eth0': [{'ip_admin_eth0.ip_admin_eth0': 'val1', 'ip_admin_eth0.netmask_admin_eth0': None}, {'ip_admin_eth0.ip_admin_eth0': 'val2', 'ip_admin_eth0.netmask_admin_eth0': None}], 'follower': [None, None]}
@ -358,10 +358,10 @@ def test_symlink_dependency():
od1 = OptionDescription("opt", "", od1 = OptionDescription("opt", "",
[linkopt, OptionDescription("s1", "", [boolopt])]) [linkopt, OptionDescription("s1", "", [boolopt])])
cfg = Config(od1) cfg = Config(od1)
assert cfg.option('s1.b').option.has_dependency() is False assert cfg.option('s1.b').has_dependency() is False
assert cfg.option('c').option.has_dependency() is True assert cfg.option('c').has_dependency() is True
assert cfg.option('s1.b').option.has_dependency(False) is True assert cfg.option('s1.b').has_dependency(False) is True
assert cfg.option('c').option.has_dependency(False) is False assert cfg.option('c').has_dependency(False) is False
# assert not list_sessions() # assert not list_sessions()
@ -387,12 +387,12 @@ def test_symlink_list(config_type):
cfg = get_config(cfg, config_type) cfg = get_config(cfg, config_type)
list_opt = [] list_opt = []
for opt in cfg.option.list(): for opt in cfg.option.list():
list_opt.append(opt.option.path()) list_opt.append(opt.path())
assert list_opt == ['c'] assert list_opt == ['c']
# #
list_opt = [] list_opt = []
for opt in cfg.option.list(recursive=True): for opt in cfg.option.list(recursive=True):
list_opt.append(opt.option.path()) list_opt.append(opt.path())
assert list_opt == ['c', 's1.b'] assert list_opt == ['c', 's1.b']
# assert not list_sessions() # assert not list_sessions()
@ -402,7 +402,7 @@ def test_submulti():
multi2 = SymLinkOption('multi2', multi) multi2 = SymLinkOption('multi2', multi)
od1 = OptionDescription('od', '', [multi, multi2]) od1 = OptionDescription('od', '', [multi, multi2])
cfg = Config(od1) cfg = Config(od1)
assert cfg.option('multi').option.ismulti() assert cfg.option('multi').ismulti()
assert cfg.option('multi').option.issubmulti() assert cfg.option('multi').issubmulti()
assert cfg.option('multi2').option.ismulti() assert cfg.option('multi2').ismulti()
assert cfg.option('multi2').option.issubmulti() assert cfg.option('multi2').issubmulti()

View file

@ -210,7 +210,7 @@ class _TiramisuOptionWalk:
return options return options
class _TiramisuOptionOptionDescription(CommonTiramisuOption): class _TiramisuOptionOptionDescription:
"""Manage option""" """Manage option"""
_validate_properties = False _validate_properties = False
@ -299,18 +299,8 @@ class _TiramisuOptionOptionDescription(CommonTiramisuOption):
uncalculated=uncalculated, uncalculated=uncalculated,
) )
def __call__(self,
name: str,
index: Optional[int]=None,
) -> 'TiramisuOption':
"""Select an option by path"""
return TiramisuOption(self._path + '.' + name,
index,
self._config_bag,
)
class _TiramisuOptionOption(_TiramisuOptionOptionDescription):
class TiramisuOptionOption(_TiramisuOptionOptionDescription):
"""Manage option""" """Manage option"""
@option_type(['option', 'symlink', 'with_or_without_index']) @option_type(['option', 'symlink', 'with_or_without_index'])
def ismulti(self, options_bag: List[OptionBag]): def ismulti(self, options_bag: List[OptionBag]):
@ -396,6 +386,18 @@ class TiramisuOptionOption(_TiramisuOptionOptionDescription):
return options_bag[-1].index return options_bag[-1].index
class TiramisuOptionOption(CommonTiramisuOption):
def __call__(self,
name: str,
index: Optional[int]=None,
) -> 'TiramisuOption':
"""Select an option by path"""
return TiramisuOption(self._path + '.' + name,
index,
self._config_bag,
)
class TiramisuOptionOwner(CommonTiramisuOption): class TiramisuOptionOwner(CommonTiramisuOption):
#FIXME optiondescription must not have Owner! #FIXME optiondescription must not have Owner!
"""Manage option's owner""" """Manage option's owner"""
@ -730,7 +732,7 @@ class TiramisuConfig(TiramisuHelp, _TiramisuOptionWalk):
return self._config_bag.context.impl_getname() return self._config_bag.context.impl_getname()
class TiramisuOption(CommonTiramisu, TiramisuConfig): class TiramisuOption(CommonTiramisu, _TiramisuOptionOption, TiramisuConfig):
"""Manage selected option""" """Manage selected option"""
_validate_properties = False _validate_properties = False
_registers = {} _registers = {}

View file

@ -88,7 +88,7 @@ class Leadership(OptionDescription):
def _check_default_value(self, child: BaseOption): def _check_default_value(self, child: BaseOption):
default = child.impl_getdefault() default = child.impl_getdefault()
if default != []: if default != []:
if child.impl_is_submulti() and isinstance(default, tuple): if child.impl_is_submulti() and isinstance(default, (list, tuple)):
for val in default: for val in default:
if not isinstance(val, Calculation): if not isinstance(val, Calculation):
calculation = False calculation = False
@ -100,8 +100,8 @@ class Leadership(OptionDescription):
calculation = isinstance(default, Calculation) calculation = isinstance(default, Calculation)
if not calculation: if not calculation:
raise ValueError(_('not allowed default value for follower option ' raise ValueError(_('not allowed default value for follower option '
'"{child.impl_get_display_name()}" in leadership ' f'"{child.impl_get_display_name()}" in leadership '
'"{self.impl_get_display_name()}"')) f'"{self.impl_get_display_name()}"'))
def _setsubdyn(self, def _setsubdyn(self,
subdyn, subdyn,

View file

@ -165,13 +165,13 @@ class CacheOptionDescription(BaseOption):
doption = option doption = option
subpath = doption.impl_getpath() subpath = doption.impl_getpath()
for index in range(follower_len): for index in range(follower_len):
if values.hasvalue(subpath, index):
continue
option_bag = OptionBag(doption, option_bag = OptionBag(doption,
index, index,
config_bag, config_bag,
properties=frozenset(), properties=frozenset(),
) )
if values.hasvalue(subpath, index=index):
continue
value = values.get_value(option_bag) value = values.get_value(option_bag)
if value is None: if value is None:
continue continue
@ -186,7 +186,7 @@ class CacheOptionDescription(BaseOption):
value = values.get_value(option_bag) value = values.get_value(option_bag)
if value is None: if value is None:
continue continue
if values.hasvalue(option_bag.option.impl_getpath()): if values.hasvalue(option_bag.path):
continue continue
values.set_storage_value(option_bag.path, values.set_storage_value(option_bag.path,
None, None,

View file

@ -465,7 +465,8 @@ class Values:
return owners.default return owners.default
if only_default: if only_default:
if self.hasvalue(option_bag.path, if self.hasvalue(option_bag.path,
option_bag.index): index=option_bag.index,
):
owner = 'not_default' owner = 'not_default'
else: else:
owner = owners.default owner = owners.default
@ -499,7 +500,9 @@ class Values:
if owner in forbidden_owners: if owner in forbidden_owners:
raise ValueError(_('set owner "{0}" is forbidden').format(str(owner))) raise ValueError(_('set owner "{0}" is forbidden').format(str(owner)))
if not self.hasvalue(option_bag.path, option_bag.index): if not self.hasvalue(option_bag.path,
index=option_bag.index,
):
raise ConfigError(_(f'no value for {option_bag.path} cannot change owner to {owner}')) raise ConfigError(_(f'no value for {option_bag.path} cannot change owner to {owner}'))
option_bag.config_bag.context.get_settings().validate_frozen(option_bag) option_bag.config_bag.context.get_settings().validate_frozen(option_bag)
self._values[option_bag.path][option_bag.index][1] = owner self._values[option_bag.path][option_bag.index][1] = owner
@ -611,7 +614,7 @@ class Values:
self.resetvalue_index(option_bag) self.resetvalue_index(option_bag)
for index in range(option_bag.index + 1, self.get_max_length(option_bag.path)): for index in range(option_bag.index + 1, self.get_max_length(option_bag.path)):
if self.hasvalue(option_bag.path, if self.hasvalue(option_bag.path,
index, index=index,
): ):
self._values[option_bag.path][index - 1] = self._values[option_bag.path].pop(index) self._values[option_bag.path][index - 1] = self._values[option_bag.path].pop(index)