嵌套重复
使用嵌套的重复构造时,根据组件的定义,一个组件中可以有多个重复构造。假定一个嵌套的重复有两个级别。对于外层列表(第一个 repeat-list)中的每个元素,您可以为内层列表(第二个 repeat-list)的所有元素创建一个重复列表。样本编译器最多支持三个嵌套的重复。每个重复级别都有与之关联的 repeat-item 和 repeat-index 属性。repeat-item 和 repeat-index 属性是可选的。此外,每个重复还可以指定 repeat-condition。
示例:
parameters:
-
name: vips
type: ipaddress[]
-
name: vip-ports
type: tcp-port[]
components:
-
name: lbvservers-comp
type: ns::lbvserver
repeat:
repeat-list: $parameters.vips
repeat-item: ip
repeat:
repeat-list: $parameters.vip-ports
repeat-item: port
properties:
name: str("lb-") + str($ip) + '-' + str($port)
servicetype: HTTP
ipv46: $ip
port: $port
<!--NeedCopy-->
在此示例中,对于 $parameters.vips
中的每个项目,我们遍历 $parameters.vip-ports
的所有项目。因此,对于 $parameters.vips
中指定的每个 ipaddress
,我们为 $参数ters.vip-ports 中指定的所有端口创建 lbvserver
配置对象。属性部分用 “lb” 作为 IP 地址和端口组合的前缀来定义对象的名称。因此,对于每次迭代 $ip + $port
定义 IP 地址和端口号的唯一组合。
如果未提供 repeat-item
属性,编译器将为其生成默认值。对于每个重复级别,重复项的默认值 别为 $repeat-item
、$repeat-item-1
、$repeat-item-2
。同样,如果未提供 repeat-index
属性,编译器将为其生成默认值。repeat-index 的默认值为:分别对应每个重复级别的 $repeat-index、$repeat-index-1 和 $repeat-index-2。
以下示例说明了嵌套的重复对象中没有 repeat-item 和 repeat-index 属性时的命名约定。
示例:
components:
-
name: lbvservers-comp
type: ns::lbvserver
repeat:
repeat-list: $parameters.vips
repeat:
repeat-list: $parameters.vip-ports
properties:
name: str("lb-") + str($repeat-item) + '-' + str($repeat-item-1)
servicetype: HTTP
ipv46: $repeat-item
port: $repeat-item-1
<!--NeedCopy-->