Repeticiones anidadas
Con el componente fijo repetido anidado, puede tener más de un componente fijo repetido en cada componente, dependiendo de la definición del componente. Considere una repetición anidada de dos niveles. Para cada elemento de la lista externa (primera lista de repetición), puede crear una lista de repetición para todos los elementos de la lista interna (segunda lista de repetición). El compilador StyleBook admite hasta tres repeticiones anidadas. Cada nivel de repetición tiene atributos repeat-item y repeat-index asociados a él. Los atributos repeat-item y repeat-index son opcionales. Además, cada repetición también puede especificar una condición de repetición.
Ejemplo:
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-->
En este ejemplo, para cada elemento en $parameters.vips
, iteramos sobre todos los elementos de $parameters.vip-ports
. Por lo tanto, para cada ipaddress
especificado en $parameters.vips
, creamos objetos de lbvserver
configuración para todos los puertos especificados en $parameters.vip-ports. La sección de propiedades define el nombre del objeto con «lb» como prefijo para la combinación de la dirección IP y el puerto. Por lo tanto, para cada iteración, $ip + $port
define una combinación única de la dirección IP y el número de puerto.
Si no se proporciona el repeat-item
atributo, el compilador genera un valor predeterminado para él. Los valores predeterminados para repetiat-item son: $repeat-item
, $repeat-item-1
, $repeat-item-2
respectivamente para cada nivel de repetición. Del mismo modo, si no se proporciona el repeat-index
atributo, el compilador genera un valor predeterminado para él. Los valores predeterminados para repeat-index son: $repeat-index, $repeat-index-1 y $repeat-index-2 respectivamente para cada nivel de repetición.
En el ejemplo siguiente se describe la convención de nomenclatura en ausencia de atributos repeat-item y repeat-index en un objeto de repetición anidado.
Ejemplo:
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-->