Properties-default-source construction

La construction properties-default-sources est analogue à la construction parameters-default-sources. Alors que la construction parameters-default-sources permet la réutilisation de paramètres existants (à partir d’autres StyleBooks) dans un StyleBook, la construction properties-default-sources permet à l’utilisateur de spécifier les propriétés d’un composant en fonction des sources existantes.

Les propriétés d’un composant peuvent être réparties entre différentes sections du StyleBook. Par exemple, les propriétés peuvent provenir de paramètres d’objet, de substitutions qui renvoient un objet, de propriétés d’autres composants ou de sorties d’autres composants. Dans de tels cas, vous devez redéfinir les propriétés qui se produisent dans d’autres sections du StyleBook dans la définition du composant. De toute évidence, cela est redondant et peut entraîner des erreurs. Pour résoudre ce problème, la construction properties-default-sources peut être utilisée. La construction properties-default-sources est une liste dans laquelle chaque élément identifie une source pour certaines propriétés du composant.

Par exemple, considérez un composant qui crée une configuration lbvserver. Ce composant doit définir les propriétés du serveur lbvserver comme suit.

parameters:

  -

    name: lb

    type: ns::lbvserver

components:

  -

    name: lb-comp

    type: ns::lbvserver

    properties:

      name: $parameters.lb.name

      ipv46: $parameters.lb.ipv46

      port: $parameters.lb.port

      servicetype: $parameters.lb.servicetype

      lbmethod: $parameters.lb.lbmethod

Dans l’exemple ci-dessus, observez que les valeurs de toutes les propriétés définies dans la section composants sont extraites de l’objet $parameters.lb. Bien qu’elles proviennent d’une seule source, les propriétés sont à nouveau définies dans le StyleBook. En outre, si un nouveau sous-paramètre à l’objet $parameters.lb qui est pertinent pour la configuration du serveur lbvserver est ajouté, vous devez mettre à jour le composant lb-comp pour ajouter la nouvelle propriété qui correspond au nouveau sous-paramètre.

Pour éviter de redéfinir les propriétés et d’extraire toutes les propriétés pertinentes d’un composant sans les énumérer explicitement dans la section properties, la construction properties-default-sources peut être utilisée. L’exemple ci-dessus peut être écrit comme suit.

parameters:

  -

    name: lb

    type: ns::lbvserver

components:

  -

    name: lb-comp

    type: ns::lbvserver

    properties-default-sources:

      - $parameters.lb

Dans l’exemple ci-dessus, l’utilisation de la construction properties-default-sources conduit à une réduction de la taille de la définition du composant, ce qui vous permet de définir de manière concise un composant. En outre, chaque fois que la source des propriétés du composant change, les modifications sont automatiquement reflétées. Par exemple, lorsqu’une nouvelle propriété, par exemple « persistencetype », est ajoutée dans l’objet $parameters.lb, cette propriété est ajoutée à la configuration de lb-comp par défaut puisque persistencetype est une propriété de lbvserver. Ainsi, la construction properties-default-sources fournit une interface dynamique pour définir les composants sans se soucier des changements qui se produisent dans les sources des propriétés du composant.

Calcul des propriétés du composant

Cette section explique comment les propriétés sont récupérées si la construction properties-default-sources est utilisée dans un composant. Tout d’abord, le compilateur StyleBooks identifie la liste des propriétés d’un composant en fonction de son type (dans l’exemple ci-dessus, lbvserver). Ensuite, le compilateur récupère ces propriétés à partir des sources multiples dans l’ordre dans lequel elles sont définies (dans la section properties-default-sources du composant). Si une propriété existe dans plusieurs sources, la propriété apparaissant dans la dernière source a priorité sur les autres. Enfin, une propriété récupérée à l’aide de la construction properties-default-sources peut être remplacée dans la section properties du composant. Il est important de noter que la définition d’une section de composant doit avoir au moins une section properties-default-sources ou une section de propriétés. Il peut avoir les deux.

Properties-default-source construction