我需要根据另一个卷自动计算一个卷大小。简化示例:
有一个输入参数
data_disk_size:
type: number
default: 50
我们希望第二卷是:100,如果1<data_disk_size<200;如果200<data_disk_size<400;其他400
正如我所理解的,conditions块不会有帮助,因为它只使用布尔值,可用的选项是if和yaql。但我无法将它们一起使用:
instance_volume_2:
type: OS::Cinder::Volume
properties:
...
size:
if:
- yaql:
expression: $.data > 1 and $.data < 200
data: {get_param: data_disk_size}
- 100
- 200 {only for test, there should be nested if}
它给出:
'错误:if.yaql:函数"yaql";在""上下文中无效
所以剩下的唯一选项是纯yaql,但它没有if运算符!
我错过了什么?也许有简单的方法可以做到这一点?
我找到了解决方案!丑陋,但工作的一个:(
YAQL没有if,但有其他逻辑运算符,如和/或。所以值可以这样计算:
instance_volume_2:
type: OS::Cinder::Volume
properties:
...
size:
yaql:
expression: (($.data < 200 and 100) or ($.data < 400 and 200)) or 400
data: {get_param: data_disk_size}