Application Delivery Management

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 crea una configuración de lbvserver. Este componente debe definir las propiedades del lbvserver de la 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 sea relevante para la configuración del servidor lbvserver, 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 se agrega una nueva propiedad, por ejemplo «persistencetype», 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 de 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 las múltiples fuentes en el orden en que están definidas (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 debe tener al menos una sección de properties-default-sources o una sección de propiedades. Puede que tenga ambas cosas.

Properties-default-sources construct