Application Delivery Management

Propriétés facultatives

Dans certains cas, la valeur d’une propriété d’un composant provient 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 la méthode lbmethod (algorithme d’équilibrage de charge) d’un composant dont le type est ns : :lbvserver. La valeur de la propriété lbmethod est extraite 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
<!--NeedCopy-->

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 est évaluée à 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
<!--NeedCopy-->

L’utilisation de « ? » omet la propriété si l’expression sur le droit n’évalue rien, ce qui équivaudrait, 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
<!--NeedCopy-->

Comme lbmethod est facultatif, son omission en fait un composant valide. Notez que lbmethod peut prendre sa valeur par défaut si elle est définie dans son type « ns : :lbvserver ».

Propriétés facultatives