Configuración de StyleBook

Properties-default-sources construct

La construcción properties-default-sources es análoga a la construcción parameters-default-sources. Mientras que la construcción parameters-default-sources permite reutilizar los parámetros existentes (de otros StyleBooks) en un StyleBook, la construcción properties-default-sources permite al usuario especificar las propiedades de un componente en función de las fuentes existentes.

Las propiedades de un componente pueden distribuirse en varias secciones del StyleBook. Por ejemplo, las propiedades pueden provenir de parámetros de objetos, sustituciones que devuelven un objeto, propiedades de otros componentes o salidas de otros componentes. En tales casos, debe redefinir las propiedades que aparecen en otras secciones del StyleBook en la definición del componente. Evidentemente, esto es redundante y puede provocar errores. Para solucionar este problema, se puede utilizar la construcción properties-default-sources. El componente fijo properties-default-sources es una lista en la que cada elemento identifica un origen para algunas propiedades del componente.

Por ejemplo, considere un componente que cree una lbvserver configuración. Este componente define las propiedades de la lbvserver siguiente manera.

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
<!--NeedCopy-->

En el ejemplo anterior, observe que los valores de todas las propiedades definidas en la sección de componentes se toman de $parameters.lb objeto. Aunque se toman de una sola fuente, las propiedades se definen de nuevo en el StyleBook. Además, si se agrega un nuevo subparámetro al objeto $parameters.lb que es relevante para la lbvserver configuración de, debe actualizar el componente lb-comp para agregar la nueva propiedad que corresponde al nuevo subparámetro.

Para evitar redefinir las propiedades y obtener todas las propiedades relevantes de un componente sin enumerarlas explícitamente en la sección de propiedades, se puede utilizar la construcción properties-default-sources. El ejemplo anterior se puede escribir de la siguiente manera.

parameters:

  -

    name: lb

    type: ns::lbvserver

components:

  -

    name: lb-comp

    type: ns::lbvserver

    properties-default-sources:

      - $parameters.lb
<!--NeedCopy-->

En el ejemplo anterior, el uso de la construcción properties-default-sources reduce el tamaño de la definición del componente, lo que permite definir un componente de forma concisa. Además, cada vez que cambia el origen de las propiedades del componente, los cambios se reflejan automáticamente. Por ejemplo, cuando una nueva propiedad, por ejemplo persistencetype, se agrega al objeto $parameters.lb, esta propiedad se agrega a la configuración de lb-comp de forma predeterminada ya que persistencetype es una propiedad de lbvserver. Por lo tanto, la construcción properties-default-sources proporciona una interfaz dinámica para definir los componentes sin preocuparse por los cambios que ocurren en las fuentes de las propiedades del componente.

Cálculo de las propiedades del componente

En esta sección se explica cómo se obtienen las propiedades si se utiliza la construcción properties-default-sources en un componente. En primer lugar, el compilador StyleBooks identifica la lista de propiedades de un componente en función de su tipo (en el ejemplo anterior, lbvserver.) A continuación, el compilador obtiene estas propiedades de los múltiples orígenes en el orden en que se definen (en la sección properties-default-sources del componente). Si una propiedad existe en varios orígenes, la propiedad que aparece en el último origen tiene prioridad sobre otras. Por último, una propiedad obtenida mediante la construcción properties-default-sources se puede reemplazar en la sección de propiedades del componente. Es importante tener en cuenta que la definición de una sección de componentes al menos tiene una sección de propiedades predeterminadas-sources o una sección de propiedades. Puede que tenga ambas cosas.

Properties-default-sources construct