Conditions de paramètre
Dans une définition StyleBook, les paramètres définissent l’entrée que les utilisateurs de StyleBook fournissent pour créer un pack de configuration. Parfois, vous pouvez souhaiter modifier le comportement des paramètres comme suit :
- Afficher certains paramètres à un utilisateur uniquement si une condition est remplie.
- Les valeurs autorisées d’un paramètre dépendent d’un autre paramètre.
- Définir un paramètre comme obligatoire uniquement sous certaines conditions.
Dans ces cas, utilisez la section parameters-conditions
pour définir les conditions de paramètre. Une condition de paramètre possède les attributs suivants :
-
target
: Spécifie le paramètre auquel vous souhaitez appliquer une condition. -
action
: Spécifie les actions à entreprendre si le paramètre cible correspond à la condition. Cette fonctionnalité prend en charge les actions suivantes : -
condition
: Spécifie une condition qui doit être remplie. -
value
: Définit les valeurs de l’attribut des paramètres cibles en fonction de l’action.
Remarque
Actuellement, les conditions de paramètre ne peuvent pas être appliquées aux paramètres au sein des objets de liste.
« show » ou « hide »
Lorsque l’action est show
et que la condition spécifiée renvoie True
, le paramètre cible apparaît dans l’interface graphique.
Lorsque l’action est hide
et que la condition spécifiée renvoie True
, le paramètre cible disparaît de l’interface graphique.
Exemple :
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: show
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Au début, les détails du certificat sont masqués pour le paramètre security-settings
. Lorsqu’un utilisateur sélectionne les protocoles SSL ou SSL-Bridge, les détails du certificat apparaissent.
« set-default »
Lorsque l’action est set-default
et que la condition spécifiée renvoie True
, la valeur du paramètre cible est définie sur la valeur par défaut.
Exemple 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-->
Exemple 2 :
parameters-conditions:
-
target: $parameters.port
action: set-default
value: if-then-else($parameters.protocol == "SSL", 443, 80)
<!--NeedCopy-->
Lorsqu’un utilisateur sélectionne le protocole SSL, la valeur de port par défaut est définie sur 443
. Pour les autres protocoles, la valeur de port par défaut est définie sur 80
. Les exemples 1 et 2 donnent le même résultat.
« set-required »
Lorsque l’action est set-required
et que la condition spécifiée renvoie True
, le paramètre cible devient un champ obligatoire pour créer un pack de configuration.
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: set-required
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Au début, les détails du certificat peuvent ne pas être obligatoires pour le paramètre security-settings
. Lorsqu’un utilisateur sélectionne les protocoles SSL ou SSL-Bridge, les détails du certificat deviennent un champ obligatoire pour créer un pack de configuration.
« set-allowed-values »
Lorsque l’action est set-allowed-values
et que la condition spécifiée renvoie True
, le paramètre cible vous permet de sélectionner uniquement les valeurs spécifiées.
Exemple 1 :
parameters-conditions:
-
target: $parameters.app-name
action: set-allowed-values
value:
- "SSL"
condition: $parameters.lb-virtual-port == 443
<!--NeedCopy-->
Lorsqu’un utilisateur spécifie 443
comme port virtuel de l’équilibreur de charge, le nom de l’application n’autorise que l’option SSL.
Exemple 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-->
Cet exemple concerne la définition d’une valeur pour un certificat SSL. La construction repeat
dans les conditions de paramètre itère sur tous les certificats intermédiaires (im-certificates
) et vérifie le paramètre link-options
de chaque certificat.
Si le paramètre link-options
correspond à une certaine valeur, les valeurs autorisées dans le paramètre link-certkey
sont ajoutées à la liste de certificats respective.
Par exemple, si le paramètre link-options
est Root
, les valeurs autorisées dans le paramètre link-certkey
sont ajoutées à la liste root-certificate
.
Les notations suivantes sont utilisées pour ajouter des certificats à la liste :
-
Pour les certificats racine :
$parameters.root-certificates[*].certkey-name <!--NeedCopy-->
-
Pour les certificats intermédiaires :
$parameters.im-certificates[*].certkey-name <!--NeedCopy-->
« set-label »
Lorsque l’action est set-label
et que la condition spécifiée renvoie True
, l’étiquette du paramètre cible est modifiée pour correspondre au texte spécifié.
Exemple :
parameters-conditions:
-
target: $parameters.app-name
action: set-label
value: if-then-else($parameters.lb-service-type == "TCP", "TCPApp","UDPApp")
<!--NeedCopy-->
Lorsqu’un utilisateur sélectionne le protocole de l’équilibreur de charge comme TCP, l’étiquette de l’application passe à TCPApp. Si l’utilisateur sélectionne une option différente, l’étiquette de l’application passe à UDPApp.
« set-description »
Lorsque l’action est set-description
et que la condition spécifiée renvoie True
, la description du paramètre cible est modifiée pour correspondre au texte spécifié. Cette description apparaît dans l’info-bulle d’un paramètre cible.
Exemple :
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-->
Lorsqu’un utilisateur sélectionne le protocole de l’équilibreur de charge comme TCP, l’info-bulle de l’application affiche le texte : Select a TCP application name
. Si l’utilisateur sélectionne une option différente, la description de l’application affiche Select a UDP application name
.
« collapse-pane » ou « expand-pane »
Lorsque l’action est collapse-pane
et que la condition spécifiée renvoie True
, le volet du paramètre cible se réduit dans l’interface graphique.
Lorsque l’action est expand-pane
et que la condition spécifiée renvoie True
, le volet du paramètre cible se développe dans l’interface graphique.
Exemple :
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: expand-pane
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Au début, le volet des détails du certificat peut ne pas être développé pour le paramètre security-settings
. Lorsqu’un utilisateur sélectionne les protocoles SSL ou SSL-Bridge, le volet des détails du certificat se développe dans l’interface graphique.
« set-pattern »
Lorsque l’action est set-pattern
et que la condition spécifiée renvoie True
, le champ du paramètre cible est défini sur le modèle spécifié.
Exemple :
parameters-conditions:
-
target: $parameters.app-name
action: set-pattern
value: "[a-z]+"
<!--NeedCopy-->
Dans cet exemple, le nom de l’application n’autorise que les caractères alphabétiques minuscules.
Conditions de paramètre imbriquées
Dans une définition StyleBook, vous pouvez spécifier une condition de paramètre au sein d’une autre condition de paramètre. Ces conditions sont appelées conditions de paramètre imbriquées et utilisent une construction repeat
pour les définir. Les conditions de paramètre imbriquées sont utiles lorsque vous souhaitez appliquer une action pour un paramètre à partir d’un autre paramètre.
Exemple :
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-->
Dans cet exemple, lorsque l’utilisateur sélectionne le protocole HTTPS pour un serveur virtuel d’équilibrage de charge, les valeurs de port sont renseignées dynamiquement. Et cela s’applique à chaque serveur virtuel d’équilibrage de charge dans la liste.