Condiciones de los parámetros
En una definición de StyleBook, los parámetros definen la entrada que los usuarios de StyleBook proporcionan para crear un paquete de configuración. A veces, es posible que quieras modificar el comportamiento de los parámetros de la siguiente manera:
- Mostrar algunos parámetros a un usuario solo si se cumple una condición.
- Que los valores permitidos de un parámetro dependan de otro parámetro.
- Establecer un parámetro como obligatorio solo bajo ciertas condiciones.
En estos casos, usa la sección parameters-conditions
para definir las condiciones de los parámetros. Una condición de parámetro tiene los siguientes atributos:
-
target
: Especifica el parámetro al que quieres aplicar una condición. -
action
: Especifica qué acciones realizar si el parámetro de destino coincide con la condición. Esta característica admite las siguientes acciones: -
condition
: Especifica una condición que debe cumplirse. -
value
: Establece los valores para el atributo de los parámetros de destino según la acción.
Nota
Actualmente, las condiciones de los parámetros no se pueden aplicar a los parámetros dentro de objetos de lista.
‘show’ o ‘hide’
Cuando la acción es show
y la condición especificada devuelve True
, el parámetro de destino aparece en la GUI.
Cuando la acción es hide
y la condición especificada devuelve True
, el parámetro de destino desaparece de la GUI.
Ejemplo:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: show
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Al principio, los detalles del certificado están ocultos para el parámetro security-settings
. Cuando un usuario selecciona los protocolos SSL o SSL-Bridge, los detalles del certificado aparecen.
‘set-default’
Cuando la acción es set-default
y la condición especificada devuelve True
, el valor del parámetro de destino se establece en el valor predeterminado.
Ejemplo 1:
parameters-conditions:
-
target: $parameters.port
action: set-default
condition: $parameters.protocol == "SSL"
value: 443
-
target: $parameters.port
action: set-default
condition: $parameters.protocol != "SSL"
value: 80
<!--NeedCopy-->
Ejemplo 2:
parameters-conditions:
-
target: $parameters.port
action: set-default
value: if-then-else($parameters.protocol == "SSL", 443, 80)
<!--NeedCopy-->
Cuando un usuario selecciona el protocolo SSL, el valor de puerto predeterminado se establece en 443
. Para otros protocolos, el valor de puerto predeterminado se establece en 80
. Los ejemplos 1 y 2 te dan el mismo resultado.
‘set-required’
Cuando la acción es set-required
y la condición especificada devuelve True
, el parámetro de destino se convierte en un campo obligatorio para crear un paquete de configuración.
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: set-required
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Al principio, los detalles del certificado podrían no ser obligatorios para el parámetro security-settings
. Cuando un usuario selecciona los protocolos SSL o SSL-Bridge, los detalles del certificado se convierten en un campo obligatorio para crear un paquete de configuración.
‘set-allowed-values’
Cuando la acción es set-allowed-values
y la condición especificada devuelve True
, el parámetro de destino te permite seleccionar solo los valores especificados.
Ejemplo 1:
parameters-conditions:
-
target: $parameters.app-name
action: set-allowed-values
value:
- "SSL"
condition: $parameters.lb-virtual-port == 443
<!--NeedCopy-->
Cuando un usuario especifica 443
como puerto virtual del equilibrador de carga, el nombre de la aplicación solo permite la opción SSL.
Ejemplo 2;
parameters:
-
name: root-certificates
label: "Root Certificates"
type: object[]
parameters:
-
name: certkey-name
label: "SSL Root CertKey Name"
type: string
required: true
-
name: im-certificates
label: "Intermediate Certificates"
type: object[]
parameters:
-
name: certkey-name
label: "Name of Intermediate CertKey"
type: string
required: true
-
name: link-options
label: "Link to Root or Intermediate CertKey?"
type: string
allowed-values:
- Root
- Intermediate
default: Root
required: true
-
name: link-certkey
label: "Linked to Root/Intermediate CertKey Name"
type: string
required: true
parameters-conditions:
-
repeat: $parameters.im-certificates
repeat-item: imcert
parameters-conditions:
-
target: $imcert.link-certkey
action: set-allowed-values
condition: $imcert.link-options == "Root"
value: $parameters.root-certificates[*].certkey-name
-
target: $imcert.link-certkey
action: set-allowed-values
condition: $imcert.link-options == "Intermediate"
value: $parameters.im-certificates[*].certkey-name
<!--NeedCopy-->
Este ejemplo trata sobre cómo establecer un valor para un certificado SSL. La construcción repeat
en las condiciones de los parámetros itera sobre todos los certificados intermedios (im-certificates
) y comprueba el parámetro link-options
de cada certificado.
Si el parámetro link-options
coincide con un valor determinado, los valores permitidos en el parámetro link-certkey
se agregan a la lista de certificados respectiva.
Por ejemplo, si el parámetro link-options
es Root
, los valores permitidos en el parámetro link-certkey
se agregan a la lista root-certificate
.
Las siguientes notaciones se usan para agregar certificados a la lista:
-
Para certificados raíz:
$parameters.root-certificates[*].certkey-name <!--NeedCopy-->
-
Para certificados intermedios:
$parameters.im-certificates[*].certkey-name <!--NeedCopy-->
‘set-label’
Cuando la acción es set-label
y la condición especificada devuelve True
, la etiqueta del parámetro de destino cambia al texto especificado.
Ejemplo:
parameters-conditions:
-
target: $parameters.app-name
action: set-label
value: if-then-else($parameters.lb-service-type == "TCP", "TCPApp","UDPApp")
<!--NeedCopy-->
Cuando un usuario selecciona el protocolo del equilibrador de carga como TCP, la etiqueta de la aplicación cambia a TCPApp. Si el usuario selecciona una opción diferente, la etiqueta de la aplicación cambia a UDPApp.
‘set-description’
Cuando la acción es set-description
y la condición especificada devuelve True
, la descripción del parámetro de destino cambia al texto especificado. Esta descripción aparece en la información sobre herramientas de un parámetro de destino.
Ejemplo:
parameters-conditions:
-
target: $parameters.app-name
action: set-description
value: if-then-else($parameters.lb-service-type == "TCP", "Select a TCP application name","Select a UDP application name")
<!--NeedCopy-->
Cuando un usuario selecciona el protocolo del equilibrador de carga como TCP, la información sobre herramientas de la aplicación muestra un texto: Select a TCP application name
. Si el usuario selecciona una opción diferente, la descripción de la aplicación muestra Select a UDP application name
.
‘collapse-pane’ o ‘expand-pane’
Cuando la acción es collapse-pane
y la condición especificada devuelve True
, el panel del parámetro de destino se contrae en la GUI.
Cuando la acción es expand-pane
y la condición especificada devuelve True
, el panel del parámetro de destino se expande en la GUI.
Ejemplo:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: expand-pane
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Al principio, el panel de detalles del certificado podría no estar expandido para el parámetro security-settings
. Cuando un usuario selecciona los protocolos SSL o SSL-Bridge, el panel de detalles del certificado se expande en la GUI.
‘set-pattern’
Cuando la acción es set-pattern
y la condición especificada devuelve True
, el campo del parámetro de destino se establece en el patrón especificado.
Ejemplo:
parameters-conditions:
-
target: $parameters.app-name
action: set-pattern
value: "[a-z]+"
<!--NeedCopy-->
En este ejemplo, el nombre de la aplicación solo permite caracteres alfabéticos en minúsculas.
Condiciones de parámetros anidadas
En una definición de StyleBook, puedes especificar una condición de parámetro dentro de otra condición de parámetro. Estas condiciones se denominan condiciones de parámetros anidadas y usan una construcción repeat
para definirlas. Las condiciones de parámetros anidadas son útiles cuando quieres aplicar una acción para un parámetro desde otro parámetro.
Ejemplo:
parameters-conditions:
-
repeat: $parameters.lbvservers
repeat-item: lbvserver
parameters-conditions:
-
target: $lbvserver.port
action: set-allowed-values
condition: $lbvserver.protocol == "HTTPS"
value: $parameters.ssl-ports
<!--NeedCopy-->
En este ejemplo, cuando el usuario selecciona el protocolo HTTPS para un servidor virtual de equilibrio de carga, los valores de puerto se rellenan dinámicamente. Y se aplica a cada servidor virtual de equilibrio de carga en la lista.