Propriétés optionnelles
Dans certains cas, une propriété d'un composant tire sa valeur d'une expression, qui peut être une expression simple telle qu'une référence de paramètre, ou une expression plus complexe. La définition de cette valeur de propriété est facultative dans le composant. Vous pouvez choisir de définir la valeur de la propriété uniquement si l'expression renvoie une valeur réelle, sinon vous pouvez choisir de ne pas définir cette propriété.
Par exemple, considérez que l'une des propriétés que vous souhaitez définir est le lbmethod (algorithme d'équilibrage de charge) d'un composant dont le type est ns::lbvserver. La valeur de la propriété lbmethod est tirée d'une valeur de paramètre fournie par l'utilisateur, comme indiqué ci-dessous :
components
-
name: lbvserver_comp
type: ns::lbvserver
properties:
name: $parameters.lb-appname + "-lb"
servicetype: $parameters.lb-service-type
ipv46: $parameters.lb-virtual-ip
port: 80
lbmethod: $parameters.lb-advanced.algorithm
Maintenant, considérez que le paramètre lb-advanced.algorithm est un paramètre facultatif. Et, si l'utilisateur ne fournit pas de valeur pour ce paramètre parce qu'il est facultatif, l'expression $parameters.lb-advanced.algorithm évalue à une valeur vide. Par conséquent, une valeur non valide est transmise pour la propriété lbmethod. Afin d'éviter une telle situation, vous pouvez annoter la propriété comme facultative en suffixant son nom avec "?" comme suit :
components
-
name: lbvserver_comp
type: ns::lbvserver
properties:
name: $parameters.lb-appname + "-lb"
servicetype: $parameters.lb-service-type
ipv46: $parameters.lb-virtual-ip
port: 80
lbmethod?: $parameters.lb-advanced.algorithm
L'utilisation de "?" omet la propriété si l'expression de droite n'évalue à rien, ce qui serait équivalent, dans ce cas, à un composant défini comme suit :
components
-
name: lbvserver_comp
type: ns::lbvserver
properties:
name: $parameters.lb-appname + "-lb"
servicetype: $parameters.lb-service-type
ipv46: $parameters.lb-virtual-ip
port: 80
Parce que lbmethod est facultatif, l'omettre rend toujours ce composant valide. Notez que lbmethod pourrait prendre sa valeur par défaut si une est définie dans son type "ns::lbvserver."