Citrix Application Delivery Management

Propiedades opcionales

En algunos casos, una propiedad de un componente toma su valor de una expresión, que puede ser una expresión simple, como una referencia de parámetro, o una más compleja. Establecer este valor de propiedad es opcional en el componente. Puede elegir establecer el valor de la propiedad solo si la expresión devuelve un valor real; de lo contrario, puede optar por no establecer esta propiedad.

Por ejemplo, considere que una de las propiedades que quiere establecer es el lbmethod (algoritmo de equilibrio de carga) de un componente cuyo tipo es ns: :lbvserver. El valor de la propiedad lbmethod se toma de un valor de parámetro proporcionado por el usuario, como se muestra a continuación:


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

Ahora, considere que el parámetro lb-advanced.algorithm es un parámetro opcional. Y, si el usuario no proporciona un valor para este parámetro porque es opcional, la expresión $parameters.lb-advanced.algorithm se evalúa como valor en blanco. Por lo tanto, se pasa un valor no válido para la propiedad lbmethod. Para evitar tal situación, puede anotar la propiedad como opcional sufijo su nombre con “? “según se indica a continuación:


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

¿El uso de “? “omite la propiedad si la expresión del derecho no se evalúa como nada, lo que sería equivalente, en este caso, a un componente definido de la siguiente manera:


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

Debido a que lbmethod es opcional, omitirlo todavía hace que este sea un componente válido. Tenga en cuenta que lbmethod podría tomar su valor predeterminado si uno está definido en su tipo “ns:: Lbvserver. “

Propiedades opcionales