Répéter la construction
Vous pouvez utiliser la constructionrépétéed’un composant pour créer plusieurs objets de configuration du même type.
Dans l’exemple suivant, le composantmembers-svcg-compest 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 derépétitionpour parcourir la liste des services spécifiés pour le paramètresvc-servers. Au cours de l’itération, le composant crée un objet NITRO de typeservicegroup_servicegroupmember_bindingpour chaque service (appelésrvdans la constructionrépét-item) dans le groupe de services, et il définit l’attributipde chaque objet NITRO sur 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
Larépétitionest un objet en soi, et laliste de répétitionetl’élément de répétitionsont des attributs de l’objet de répétition.
- repeat-list est un attribut obligatoire qui identifie la liste sur laquelle le composant itère.
- repeat-item est facultatif et est utilisé pour donner un nom convivial à l’élément courant dans l’itération.
Si non spécifié, l’élément actuel 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
En plus de pouvoir faire référence à l’élément courant en blanc itérant sur une liste, il est également possible de faire référence à l’index courant de l’élément dans la liste en utilisant l’index répété. Dans l’exemple suivant, l’index répétéest utilisé pour calculer un numéro de port basé sur l’index courant :
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
Semblable à la constructionrepeat-item, vous pouvez attribuer un nom de variable différent pour faire référence à l’index courant 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