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])
|
od2 = OptionDescription('root', '', [od1])
|
||||||
cfg = Config(od2)
|
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']}]}
|
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):
|
elif isinstance(value, list):
|
||||||
# copy
|
# copy
|
||||||
value = value.copy()
|
value = value.copy()
|
||||||
|
elif isinstance(value, Calculation):
|
||||||
|
value, _has_calculation = get_calculated_value(
|
||||||
|
subconfig,
|
||||||
|
value,
|
||||||
|
)
|
||||||
self._setvalue(
|
self._setvalue(
|
||||||
subconfig,
|
subconfig,
|
||||||
ori_value,
|
ori_value,
|
||||||
owner,
|
owner,
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
"force_store_value" in setting_properties
|
"force_store_value" in self_properties
|
||||||
and subconfig.option.impl_is_leader()
|
and subconfig.option.impl_is_leader()
|
||||||
):
|
):
|
||||||
leader = subconfig.option.impl_get_leadership()
|
leader = subconfig.option.impl_get_leadership()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue