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()
with pytest.raises(PropertiesOptionError):
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 not list_sessions()

View file

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