fix: subconfig with follower

This commit is contained in:
egarette@silique.fr 2026-01-16 21:05:47 +01:00
parent 50ff511554
commit 27e8f0c69f
2 changed files with 9 additions and 5 deletions

View file

@ -410,6 +410,9 @@ def test_groups_with_leader_hidden_in_config():
cfg.option('ip_admin_eth0.ip_admin_eth0').value.get() cfg.option('ip_admin_eth0.ip_admin_eth0').value.get()
with pytest.raises(PropertiesOptionError): with pytest.raises(PropertiesOptionError):
cfg.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() cfg.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get()
cfg.forcepermissive.option('ip_admin_eth0.netmask_admin_eth0').index(0).value.get()
with pytest.raises(PropertiesOptionError):
cfg.option('ip_admin_eth0.netmask_admin_eth0').index(0).value.get()
assert parse_od_get(cfg.value.get()) == {} assert parse_od_get(cfg.value.get()) == {}
# assert not list_sessions() # assert not list_sessions()

View file

@ -559,6 +559,7 @@ class _TiramisuOptionOptionDescription:
leadership.option.get_leader(), leadership.option.get_leader(),
None, None,
False, False,
config_bag=self._config_bag,
) )
return TiramisuOption( return TiramisuOption(
leader_subconfig.path, leader_subconfig.path,
@ -581,6 +582,7 @@ class _TiramisuOptionOptionDescription:
follower, follower,
None, None,
False, False,
config_bag=self._config_bag,
) )
ret.append( ret.append(
TiramisuOption( TiramisuOption(
@ -687,6 +689,7 @@ class _TiramisuOptionOption(_TiramisuOptionOptionDescription):
self._subconfig.option, self._subconfig.option,
index, index,
True, True,
config_bag=self._config_bag,
) )
return TiramisuOption(self._path, index, self._config_bag, subconfig=subconfig) return TiramisuOption(self._path, index, self._config_bag, subconfig=subconfig)
@ -1080,8 +1083,8 @@ class TiramisuOptionValue(CommonTiramisuOption, _TiramisuODGet):
if uncalculated: if uncalculated:
return self._subconfig.option.impl_getdefault() return self._subconfig.option.impl_getdefault()
if self._subconfig.option.impl_is_follower() and self._subconfig.index is None: if self._subconfig.option.impl_is_follower() and self._subconfig.index is None:
msg = _("please specify index with a follower option ({0}.{1})").format( msg = _("please specify index with a follower option ({0})").format(
self.__class__.__name__, func.__name__ self._subconfig.path
) )
raise ConfigError(msg) raise ConfigError(msg)
return self._config_bag.context.get_values().get_default_value(self._subconfig) return self._config_bag.context.get_values().get_default_value(self._subconfig)
@ -1284,9 +1287,7 @@ class TiramisuOption(
config_bag.nowarnings() config_bag.nowarnings()
else: else:
config_bag.set_permissive() config_bag.set_permissive()
if self._subconfig is not None: return self.__class__(self._path, self._index, config_bag)
self._subconfig.config_bag = config_bag
return self.__class__(self._path, self._index, config_bag, subconfig=self._subconfig)
raise ConfigError( raise ConfigError(
_("please specify a valid sub function ({0}.{1}) for {2}").format( _("please specify a valid sub function ({0}.{1}) for {2}").format(
self.__class__.__name__, subfunc, self._path self.__class__.__name__, subfunc, self._path