Répétitions imbriquées
Avec la construction de répétition imbriquée, vous pouvez avoir plus d'une construction de répétition dans chaque composant, selon la définition du composant. Considérez une répétition imbriquée sur deux niveaux. Pour chaque élément de la liste externe (première liste de répétition), vous pouvez créer une liste de répétition pour tous les éléments de la liste interne (deuxième liste de répétition). Le compilateur StyleBook prend en charge jusqu'à trois répétitions imbriquées. Chaque niveau de répétition possède des attributs repeat-item et repeat-index associés. Les attributs repeat-item et repeat-index sont facultatifs. De plus, chaque répétition peut également spécifier une repeat-condition.
Exemple :
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
Dans l'exemple ci-dessus, pour chaque élément de $parameters.vips, nous itérons sur tous les éléments de $parameters.vip-ports. Ainsi, pour chaque adresse IP spécifiée dans $parameters.vips, nous créons des objets de configuration lbvserver pour tous les ports spécifiés dans $parameters.vip-ports. La section des propriétés définit le nom de l'objet avec « lb » comme préfixe pour la combinaison de l'adresse IP et du port. Par conséquent, pour chaque itération, $ip + $port définit une combinaison unique de l'adresse IP et du numéro de port.
Si l'attribut repeat-item n'est pas fourni, le compilateur génère une valeur par défaut. Les valeurs par défaut pour repeat-item sont : $repeat-item, $repeat-item-1, $repeat-item-2 respectivement pour chaque niveau de répétition. De même, si l'attribut repeat-index n'est pas fourni, le compilateur génère une valeur par défaut. Les valeurs par défaut pour repeat-index sont : $repeat-index, $repeat-index-1 et $repeat-index-2 respectivement pour chaque niveau de répétition.
L'exemple suivant décrit la convention de nommage en l'absence d'attributs repeat-item et repeat-index dans un objet de répétition imbriquée.
Exemple :
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