参数条件

参数条件用于修改样书定义中某些参数的行为。 样书定义中的参数是创建配置包所提供的输入。 使用 参数条件 在定义中定义参数条件。

在样书定义中,一个参数可以有许多约束。 参数条件用于解决用户更改参数行为时产生的冲突。 例如,当用户选择 SSL 协议时,需要证书详细信息来创建配置包。 但是,证书详细信息可能一开始不会被设置为必填字段。

参数condition具有以下属性:

笔记:

目前,参数条件不能应用于列表对象内的参数。

“增加允许值”

当操作为 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 参数可能不需要证书详细信息。 当用户选择 SSLSSL-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 参数展开。 当用户选择 SSLSSL-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 协议时,端口值会动态填充。 并且,它适用于列表中的每个负载平衡虚拟服务器。