fix: calculation with leader
This commit is contained in:
parent
01e0d1de5c
commit
636aa721dc
2 changed files with 18 additions and 1 deletions
|
|
@ -1128,3 +1128,15 @@ def test_default_calc():
|
|||
od2 = OptionDescription('root', '', [od1])
|
||||
cfg = Config(od2)
|
||||
assert parse_od_get(cfg.value.get()) == {'od.interface0.var1': [{'od.interface0.var1': 'leader1', 'od.interface0.var2': ['leader1']}, {'od.interface0.var1': 'leader2', 'od.interface0.var2': ['leader2']}]}
|
||||
|
||||
|
||||
def test_default_set_calc():
|
||||
var1 = StrOption('var1', "", multi=True, properties=frozenset({"mandatory", "novalidator", "force_store_value"}))
|
||||
var2 = StrOption('var2', "", default_multi=[Calculation(calc_value, Params((ParamOption(var1))))], multi=submulti, properties=frozenset({"mandatory",}))
|
||||
leader = Leadership('interface0', '', [var1, var2])
|
||||
od1 = OptionDescription('od', '', [leader])
|
||||
od2 = OptionDescription('root', '', [od1])
|
||||
cfg = Config(od2)
|
||||
cfg.property.read_write()
|
||||
cfg.option('od.interface0.var1').value.set(Calculation(calc_value, Params(ParamValue(['leader1', 'leader2']))))
|
||||
assert parse_od_get(cfg.value.get()) == {'od.interface0.var1': [{'od.interface0.var1': 'leader1', 'od.interface0.var2': ['leader1']}, {'od.interface0.var1': 'leader2', 'od.interface0.var2': ['leader2']}]}
|
||||
|
|
|
|||
|
|
@ -318,13 +318,18 @@ class Values:
|
|||
elif isinstance(value, list):
|
||||
# copy
|
||||
value = value.copy()
|
||||
elif isinstance(value, Calculation):
|
||||
value, _has_calculation = get_calculated_value(
|
||||
subconfig,
|
||||
value,
|
||||
)
|
||||
self._setvalue(
|
||||
subconfig,
|
||||
ori_value,
|
||||
owner,
|
||||
)
|
||||
if (
|
||||
"force_store_value" in setting_properties
|
||||
"force_store_value" in self_properties
|
||||
and subconfig.option.impl_is_leader()
|
||||
):
|
||||
leader = subconfig.option.impl_get_leadership()
|
||||
|
|
|
|||
Loading…
Reference in a new issue