Repeticiones anidadas

Last published : Oct 02, 2026
Con la construcción de repetición anidada, puede tener más de una construcción de repetición 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 de StyleBook admite hasta tres repeticiones anidadas. Cada nivel de repetición tiene atributos repeat-item y repeat-index asociados. Ambos 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
En el ejemplo anterior, para cada elemento en $parameters.vips, iteramos sobre todos los elementos de $parameters.vip-ports. Así, para cada dirección IP especificada en $parameters.vips, creamos objetos de configuración lbvserver 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 atributo repeat-item, el compilador genera un valor predeterminado para él. Los valores predeterminados para repeat-item son: $repeat-item, $repeat-item-1, $repeat-item-2, respectivamente, para cada nivel de repetición. De manera similar, si no se proporciona el atributo repeat-index, 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.
El siguiente ejemplo describe la convención de nomenclatura en ausencia de atributos repeat-item y repeat-index en un objeto de repetición anidada.
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