feat: default value for a calculated variable with an unknown optional variable
This commit is contained in:
parent
f2259653f7
commit
af6d11f457
18 changed files with 172 additions and 9 deletions
|
|
@ -323,6 +323,16 @@ class RougailOutputFormatter:
|
||||||
):
|
):
|
||||||
del variable["mandatory"]
|
del variable["mandatory"]
|
||||||
if "default" in variable:
|
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 [
|
if "type" in variable and variable["type"] in [
|
||||||
"string",
|
"string",
|
||||||
"boolean",
|
"boolean",
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
...
|
||||||
25
tests/results/00_6ip/rougail/00-base.yml
Normal file
25
tests/results/00_6ip/rougail/00-base.yml
Normal 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
|
||||||
|
...
|
||||||
23
tests/results/00_6network/rougail/00-base.yml
Normal file
23
tests/results/00_6network/rougail/00-base.yml
Normal 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
|
||||||
|
...
|
||||||
|
|
@ -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
|
||||||
|
...
|
||||||
|
|
@ -7,7 +7,6 @@ my_variable:
|
||||||
- val2
|
- val2
|
||||||
|
|
||||||
my_calculated_variable:
|
my_calculated_variable:
|
||||||
multi: true
|
|
||||||
default:
|
default:
|
||||||
variable: _.my_variable
|
variable: _.my_variable
|
||||||
optional: true
|
optional: true
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
...
|
||||||
|
|
@ -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
|
||||||
|
...
|
||||||
|
|
@ -14,7 +14,6 @@ leader:
|
||||||
|
|
||||||
follower2:
|
follower2:
|
||||||
description: the follower2
|
description: the follower2
|
||||||
multi: true
|
|
||||||
default:
|
default:
|
||||||
variable: _.follower1
|
variable: _.follower1
|
||||||
...
|
...
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
...
|
||||||
|
|
@ -16,7 +16,6 @@ leader:
|
||||||
|
|
||||||
calculate:
|
calculate:
|
||||||
description: a calculated variable
|
description: a calculated variable
|
||||||
multi: true
|
|
||||||
default:
|
default:
|
||||||
variable: _.leader.follower1
|
variable: _.leader.follower1
|
||||||
unique: false
|
unique: false
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
...
|
||||||
|
|
@ -19,7 +19,6 @@ my_dyn_family_{{ identifier }}:
|
||||||
|
|
||||||
var2:
|
var2:
|
||||||
description: a variable
|
description: a variable
|
||||||
multi: true
|
|
||||||
default:
|
default:
|
||||||
variable: _.my_dyn_family_{{ identifier }}.var
|
variable: _.my_dyn_family_{{ identifier }}.var
|
||||||
...
|
...
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ version: 1.1
|
||||||
|
|
||||||
var2:
|
var2:
|
||||||
description: a variable
|
description: a variable
|
||||||
multi: true
|
|
||||||
default:
|
default:
|
||||||
variable: _.my_dyn_family_{{ identifier }}.var
|
variable: _.my_dyn_family_{{ identifier }}.var
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ version: 1.1
|
||||||
|
|
||||||
var2:
|
var2:
|
||||||
description: a variable
|
description: a variable
|
||||||
multi: true
|
|
||||||
default:
|
default:
|
||||||
variable: _.my_dyn_family_{{ identifier }}.var
|
variable: _.my_dyn_family_{{ identifier }}.var
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ my_dyn_family_{{ identifier }}:
|
||||||
|
|
||||||
var2:
|
var2:
|
||||||
description: a variable
|
description: a variable
|
||||||
multi: true
|
|
||||||
default:
|
default:
|
||||||
variable: _.my_dyn_family_{{ identifier }}.var
|
variable: _.my_dyn_family_{{ identifier }}.var
|
||||||
...
|
...
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ my_dyn_family_{{ identifier }}:
|
||||||
|
|
||||||
var2:
|
var2:
|
||||||
description: a variable
|
description: a variable
|
||||||
multi: true
|
|
||||||
default:
|
default:
|
||||||
variable: _.my_dyn_family_{{ identifier }}.var
|
variable: _.my_dyn_family_{{ identifier }}.var
|
||||||
...
|
...
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ excludes = [
|
||||||
]
|
]
|
||||||
|
|
||||||
test_ok = get_structures_list(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):
|
def idfn(fixture_value):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue