参数条件用于修改样书定义中某些参数的行为。 样书定义中的参数是创建配置包所提供的输入。 使用 参数条件
在定义中定义参数条件。
在样书定义中,一个参数可以有许多约束。 参数条件用于解决用户更改参数行为时产生的冲突。 例如,当用户选择 SSL 协议时,需要证书详细信息来创建配置包。 但是,证书详细信息可能一开始不会被设置为必填字段。
参数condition具有以下属性:
目标
:指定要应用操作的目标参数。 您可以指定多个目标参数。
action
:指定对目标参数采取什么操作。 参数条件支持以下操作:
条件
:可选,指定一个条件来对指定的目标参数应用操作。 如果不指定条件,则操作将直接应用于目标参数。
值
:根据操作设置目标参数属性的值。
笔记:
目前,参数条件不能应用于列表对象内的参数。
当操作为 augment-allowed-values
时,目标参数将作为下拉菜单出现在 GUI 中。 下拉菜单使用 StyleBook 定义的 值
属性中定义的值进行设置。
示例:
参数条件:
-
目标: $parameters.rewritepolicy.action
动作:augment-allowed-values
值: $parameters.rewriteaction
<!--NeedCopy-->
当操作为 show
且指定条件返回 True
时,目标参数会出现在 GUI 上。
当操作为 hide
且指定条件返回 True
时,目标参数将从 GUI 中消失。
示例:
参数条件:
-
目标: $parameters.security-settings.cert-details
操作:显示
条件: $parameters.protocol 在 ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
首先,证书详细信息对于 security-settings
参数是隐藏的。 当用户选择 SSL 或 SSL-Bridge 协议时,就会出现证书详细信息。
当操作为 set-default
且指定条件返回 True
时,目标参数的值将设置为默认值。
示例 1:
参数条件:
-
目标: $parameters.port
操作:set-default
条件: $parameters.protocol == "SSL"
值:443
-
目标: $parameters.port
操作:set-default
条件: $parameters.protocol != "SSL"
值:80
<!--NeedCopy-->
示例 2:
参数条件:
-
目标: $parameters.port
操作:set-default
值:if-then-else($parameters.protocol == "SSL", 443, 80)
<!--NeedCopy-->
当用户选择 SSL 协议时,默认端口值设置为 443
。 对于其他协议,默认端口值设置为 80
。 示例 1 和示例 2 给出相同的结果。
当操作为 set-required
且指定条件返回 True
时,目标参数将成为创建配置包的必填字段。
参数条件:
-
目标: $parameters.security-settings.cert-details
操作:set-required
条件: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
首先, security-settings
参数可能不需要证书详细信息。 当用户选择 SSL 或 SSL-Bridge 协议时,证书详细信息将成为创建配置包的必填字段。
当操作为 set-allowed-values
且指定条件返回 True
时,目标参数允许您仅选择指定的值。
示例:
参数条件:
-
目标: $parameters.app-name
操作:set-allowed-values
值:
- "SSL"
条件: $parameters.lb-virtual-port == 443
<!--NeedCopy-->
当用户指定 443
作为负载均衡器虚拟端口时,应用程序的名称仅允许 SSL 选项。
当操作为 set-label
且指定条件返回 True
时,目标参数的标签将更改为指定的文本。
示例:
参数条件:
-
目标: $parameters.app-name
动作:set-label
值:if-then-else($parameters.lb-service-type == "TCP", "TCPApp","UDPApp")
<!--NeedCopy-->
当用户选择负载均衡器协议为 TCP时,应用程序的标签将更改为 TCPApp。 如果用户选择不同的选项,应用程序的标签将更改为 UDPApp。
当操作为 set-description
且指定条件返回 True
时,目标参数的描述将更改为指定文本。 此描述出现在目标参数的工具提示中。
示例:
参数条件:
-
目标: $parameters.app-name
动作:set-description
值:if-then-else($parameters.lb-service-type == "TCP", "选择一个 TCP 应用程序名称","选择一个 UDP 应用程序名称")
<!--NeedCopy-->
当用户选择负载均衡器协议为 TCP时,应用程序的工具提示会显示一条文本: 选择 TCP 应用程序名称
。 如果用户选择不同的选项,应用程序的描述将显示 选择 UDP 应用程序名称
。
当操作为 crash-pane
且指定条件返回 True
时,目标参数的窗格将在 GUI 中折叠。
当操作为 expand-pane
且指定条件返回 True
时,目标参数的窗格将在 GUI 中展开。
示例:
参数条件:
-
目标: $parameters.security-settings.cert-details
操作:expand-pane
条件: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
首先,证书详细信息窗格可能不会针对 security-settings
参数展开。 当用户选择 SSL 或 SSL-Bridge 协议时,证书详细信息窗格会在 GUI 上展开。
当操作为 set-pattern
且指定条件返回 True
时,目标参数字段设置为指定模式。
示例:
参数条件:
-
目标: $parameters.app-name
动作:set-pattern
值:“[az]+”
<!--NeedCopy-->
在此示例中,应用程序的名称只允许使用小写字母。
在样书定义中,您可以在参数条件中指定参数条件。 这些条件被称为嵌套参数条件,并使用重复结构来定义这些条件。 当您想要对一个参数应用另一个参数的操作时,嵌套参数条件很有用。
示例:
参数条件:
-
重复: $parameters.lbvservers
重复项目:lbvserver
参数条件:
-
目标: $lbvserver.port
操作:设置允许值
条件: $lbvserver.protocol == "HTTPS"
值: $parameters.ssl-ports
<!--NeedCopy-->
在此示例中,当用户为负载平衡虚拟服务器选择 HTTPS 协议时,端口值会动态填充。 并且,它适用于列表中的每个负载平衡虚拟服务器。