Construction repeat
Vous pouvez utiliser la construction de répétition d’un composant pour créer plusieurs objets de configuration du même type.
Dans l’exemple suivant, le composant members-svcg-comp est utilisé pour lier la liste des services au groupe de services créé par le composant parent. Pour créer un objet de configuration qui lie chaque serveur au groupe de services, utilisez la construction de répétition pour parcourir la liste des services spécifiés pour le paramètre svc-servers. Au cours de l’itération, le composant crée un objet NITRO de type servicegroup_servicegroupmember_binding pour chaque service (appelé srv dans la construction repeat-item ) dans le groupe de services, et il définit l’attribut ip dans chaque NITRO à l’adresse IP du service correspondant.
Exemple :
components:
-
name: my-lbvserver-comp
type: ns::lbvserver
properties:
name: $parameters.name + "-lb"
servicetype: HTTP
ipv46: $parameters.ip
port: 80
lbmethod: $parameters.lb-alg
components:
-
name: my-svcg-comp
type: ns::servicegroup
properties:
name: $parameters.name + "-svcgrp"
servicetype: HTTP
components:
-
name: lbvserver-svg-binding-comp
type: ns::lbvserver\servicegroup\binding
properties:
name: $parent.parent.properties.name
servicegroupname: $parent.properties.name
-
name: members-svcg-comp
type: ns::servicegroup\servicegroupmember\binding
repeat:
repeat-list: $parameters.svc-servers
repeat-item: srv
properties:
ip: $srv
port: $parameters.svc-port
servicegroupname: $parent.properties.name
<!--NeedCopy-->
La répétition est un objet en soi, et la liste de répétition et l’élément de répétition sont des attributs de l’objet de répétition.
- repeat-list est un attribut obligatoire qui identifie la liste sur laquelle le composant effectue une itération.
- repeat-item est facultatif et est utilisé pour donner un nom convivial à l’élément actif dans l’itération.
Si ce n’est pas spécifié, l’élément actif est accessible à l’aide de l’expression**$repeat-item**. Le dernier composant de l’exemple ci-dessus peut également être écrit comme suit :
-
name: members-svcg-comp
type: ns::servicegroup_servicegroupmember_binding
repeat:
repeat-list: $parameters.svc-servers
properties:
ip: $repeat-item
port: $parameters.svc-port
servicegroupname: $parent.properties.name
<!--NeedCopy-->
En plus de pouvoir faire référence à l’élément actuel en blanc itérant sur une liste, il est également possible de faire référence à l’index actuel de l’élément dans la liste en utilisant l’index répété. Dans l’exemple suivant, repeat-index est utilisé pour calculer un numéro de port basé sur l’index actuel :
name: services
type: ns::service
repeat:
repeat-list: $parameters.app-services
repeat-item: srv
properties:
ip: $parameters.app-ip
port: $parameters.base-port + repeat-index
servicegroupname: $parent.properties.name
<!--NeedCopy-->
Comme pour la construction d’élément de répétition, vous pouvez attribuer un nom de variable différent pour faire référence à l’index actuel de l’itération. L’exemple précédent est équivalent à l’exemple suivant :
-
name: services
type: ns::service
repeat:
repeat-list: $parameters.app-services
repeat-item: srv
repeat-index: idx
properties:
ip: $parameters.app-ip
port: $parameters.base-port + $idx
servicegroupname: $parent.properties.name
<!--NeedCopy-->