参数条件
参数条件用于修改 StyleBook 定义中某些参数的行为。StyleBook 定义中的参数是用于创建配置包的输入。使用
parameters-conditions 在定义中定义参数条件。
参数在 StyleBook 定义中可以有许多约束。当用户更改参数行为时,参数条件用于解决冲突。例如,当用户选择 SSL 协议时,需要证书详细信息才能创建配置包。但是,证书详细信息最初可能未设置为必填字段。
参数条件具有以下属性:
注意:
目前,参数条件无法应用于列表对象中的参数。
'增加允许值'
当操作为
augment-allowed-values 时,目标参数在 GUI 中显示为下拉菜单。下拉菜单的值由 StyleBook 定义的 value 属性中定义的值设置。
示例:
parameters-conditions:
-
target: $parameters.rewritepolicy.action
action: augment-allowed-values
value: $parameters.rewriteaction
'显示' 或 '隐藏'
当操作为
show 且指定条件返回 True 时,目标参数将显示在 GUI 上。
当操作为
hide 且指定条件返回 True 时,目标参数将从 GUI 上消失。
示例:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: show
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
最初,证书详细信息对
security-settings 参数是隐藏的。当用户选择 SSL 或 SSL-Bridge 协议时,证书详细信息将显示。
'设置默认值'
当操作为
set-default 且指定条件返回 True 时,目标参数的值将设置为默认值。
示例 1:
parameters-conditions:
-
target: $parameters.port
action: set-default
condition: $parameters.protocol == "SSL"
value: 443
-
target: $parameters.port
action: set-default
condition: $parameters.protocol != "SSL"
value: 80
示例 2:
parameters-conditions:
-
target: $parameters.port
action: set-default
value: if-then-else($parameters.protocol == "SSL", 443, 80)
当用户选择 SSL 协议时,默认端口值设置为
443。对于其他协议,默认端口值设置为 80。示例 1 和 2 会得到相同的结果。
'设置必需'
当操作为
set-required 并且指定条件返回 True 时,目标参数成为创建配置包的必填字段。
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: set-required
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
最初,
security-settings 参数可能不需要证书详细信息。当用户选择 SSL 或 SSL-Bridge 协议时,证书详细信息成为创建配置包的必填字段。
'设置允许值'
当操作为
set-allowed-values 并且指定条件返回 True 时,目标参数允许您仅选择指定值。
示例:
parameters-conditions:
-
target: $parameters.app-name
action: set-allowed-values
value:
- "SSL"
condition: $parameters.lb-virtual-port == 443
当用户将
443 指定为负载均衡器虚拟端口时,应用程序名称仅允许 SSL 选项。
'设置标签'
当操作为
set-label 并且指定条件返回 True 时,目标参数的标签将更改为指定的文本。
示例:
parameters-conditions:
-
target: $parameters.app-name
action: set-label
value: if-then-else($parameters.lb-service-type == "TCP", "TCPApp","UDPApp")
当用户选择负载均衡器协议为 TCP 时,应用程序的标签将更改为 TCPApp。如果用户选择不同的选项,应用程序的标签将更改为 UDPApp。
'设置描述'
当操作为
set-description 并且指定条件返回 True 时,目标参数的描述将更改为指定的文本。此描述将显示在目标参数的工具提示中。
示例:
parameters-conditions:
-
target: $parameters.app-name
action: set-description
value: if-then-else($parameters.lb-service-type == "TCP", "Select a TCP application name","Select a UDP application name")
当用户选择负载均衡器协议为 TCP 时,应用程序的工具提示会显示文本:
Select a TCP application name。如果用户选择其他选项,应用程序的描述会显示 Select a UDP application name。
'折叠窗格' 或 '展开窗格'
当操作为
collapse-pane 且指定条件返回 True 时,目标参数的窗格会在 GUI 中折叠。
当操作为
expand-pane 且指定条件返回 True 时,目标参数的窗格会在 GUI 中展开。
示例:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: expand-pane
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
最初,
security-settings 参数的证书详细信息窗格可能未展开。当用户选择 SSL 或 SSL-Bridge 协议时,证书详细信息窗格会在 GUI 上展开。
'设置模式'
当操作为
set-pattern 且指定条件返回 True 时,目标参数字段会设置为指定的模式。
示例:
parameters-conditions:
-
target: $parameters.app-name
action: set-pattern
value: "[a-z]+"
在此示例中,应用程序名称只允许小写字母字符。
嵌套参数条件
在 StyleBook 定义中,您可以在参数条件中指定另一个参数条件。这些条件称为嵌套参数条件,并使用重复构造来定义这些条件。当您希望从另一个参数为某个参数应用操作时,嵌套参数条件会很有用。
示例:
parameters-conditions:
-
repeat: $parameters.lbvservers
repeat-item: lbvserver
parameters-conditions:
-
target: $lbvserver.port
action: set-allowed-values
condition: $lbvserver.protocol == "HTTPS"
value: $parameters.ssl-ports
在此示例中,当用户为负载均衡虚拟服务器选择 HTTPS 协议时,端口值会动态填充。并且,它适用于列表中的每个负载均衡虚拟服务器。