feat: default value for a calculated variable with an unknown optional variable

This commit is contained in:
egarette@silique.fr 2025-09-28 15:50:26 +02:00
parent f2259653f7
commit af6d11f457
18 changed files with 172 additions and 9 deletions

View file

@ -323,6 +323,16 @@ class RougailOutputFormatter:
):
del variable["mandatory"]
if "default" in variable:
if isinstance(obj.default, VariableCalculation):
is_multi = "multi" in variable and variable["multi"] is True
if "type" in variable or is_multi:
other_path = self.rougail.paths.get_full_path(obj.default.variable, path)
if other_path in self.rougail.paths:
other_obj = self.rougail.paths[other_path]
if "type" in variable and variable["type"] == other_obj.type:
del variable["type"]
if is_multi and obj.multi:
del variable["multi"]
if "type" in variable and variable["type"] in [
"string",
"boolean",

View file

@ -0,0 +1,16 @@
%YAML 1.2
---
version: 1.1
var1:
description: a first variable
type: domainname
params:
allow_ip: true
multi: true
var2:
description: a second variable
default:
variable: _.var1
...

View file

@ -0,0 +1,25 @@
%YAML 1.2
---
version: 1.1
var1:
description: an IP
type: ip
default: 1.1.1.1
var2:
description: an IP in CIDR format
examples:
- 192.168.0.128/25
type: ip
params:
cidr: true
default: 1.1.1.1/24
var3:
description: an IP in CIDR format with obsolete CIDR type
type: ip
params:
cidr: true
default: 1.1.1.1/24
...

View file

@ -0,0 +1,23 @@
%YAML 1.2
---
version: 1.1
var1:
description: an network
type: network
default: 1.1.1.0
var2:
description: an network in CIDR format
type: network
params:
cidr: true
default: 1.1.1.0/24
var3:
description: an network in CIDR format with obsolete CIDR type
type: network
params:
cidr: true
default: 1.1.1.0/24
...

View file

@ -0,0 +1,13 @@
%YAML 1.2
---
version: 1.1
my_variable: val1
my_calculated_variable:
- variable: _.my_variable
optional: true
- variable: _.my_variable_unexists
optional: true
default: value
...

View file

@ -7,7 +7,6 @@ my_variable:
- val2
my_calculated_variable:
multi: true
default:
variable: _.my_variable
optional: true

View file

@ -0,0 +1,15 @@
%YAML 1.2
---
version: 1.1
variable:
description: a variable
choices:
variable: _.unknown_variable
optional: true
default:
- a
- b
- c
default: c
...

View file

@ -0,0 +1,36 @@
%YAML 1.2
---
version: 1.1
condition: false # a condition
var1:
description: a first variable
mandatory: false
hidden:
variable: _.unknown
optional: true
var2:
description: a first variable
mandatory: false
hidden:
variable: _.unknown
optional: true
default: true
var3:
description: a second variable
mandatory: false
hidden:
variable: _.condition
optional: true
default: true
var4:
description: a forth variable
mandatory: false
hidden:
variable: _.condition
optional: true
...

View file

@ -14,7 +14,6 @@ leader:
follower2:
description: the follower2
multi: true
default:
variable: _.follower1
...

View file

@ -0,0 +1,18 @@
%YAML 1.2
---
version: 1.1
leader:
description: a leadership
type: leadership
leader: # a leader
- a
- b
- c
follower1:
description: a follower
default:
type: index
...

View file

@ -16,7 +16,6 @@ leader:
calculate:
description: a calculated variable
multi: true
default:
variable: _.leader.follower1
unique: false

View file

@ -0,0 +1,15 @@
%YAML 1.2
---
version: 1.1
dyn{{ identifier }}:
description: a dynamic family
dynamic:
variable: _.unknown_var
optional: true
default:
- a
- b
var: val # a variable inside dynamic family
...

View file

@ -19,7 +19,6 @@ my_dyn_family_{{ identifier }}:
var2:
description: a variable
multi: true
default:
variable: _.my_dyn_family_{{ identifier }}.var
...

View file

@ -4,7 +4,6 @@ version: 1.1
var2:
description: a variable
multi: true
default:
variable: _.my_dyn_family_{{ identifier }}.var

View file

@ -4,7 +4,6 @@ version: 1.1
var2:
description: a variable
multi: true
default:
variable: _.my_dyn_family_{{ identifier }}.var

View file

@ -20,7 +20,6 @@ my_dyn_family_{{ identifier }}:
var2:
description: a variable
multi: true
default:
variable: _.my_dyn_family_{{ identifier }}.var
...

View file

@ -23,7 +23,6 @@ my_dyn_family_{{ identifier }}:
var2:
description: a variable
multi: true
default:
variable: _.my_dyn_family_{{ identifier }}.var
...

View file

@ -15,7 +15,7 @@ excludes = [
]
test_ok = get_structures_list(excludes)
test_ok = [Path('../rougail-tests/structures/00_2default_calculated_variable')]
# test_ok = [Path('../rougail-tests/structures/00_2default_calculated_variable')]
def idfn(fixture_value):