Parameterbedingungen
In einer StyleBook-Definition legen Parameter die Eingaben fest, die StyleBook-Benutzer zur Erstellung eines Konfigurationspakets bereitstellen. Manchmal möchten Sie das Verhalten der Parameter wie folgt ändern:
- Einigen Parametern einem Benutzer nur anzeigen, wenn eine Bedingung erfüllt ist.
- Die zulässigen Werte eines Parameters von einem anderen Parameter abhängig machen.
- Einen Parameter nur unter bestimmten Bedingungen als obligatorisch festlegen.
In diesen Fällen verwenden Sie den Abschnitt parameters-conditions
, um Parameterbedingungen zu definieren. Eine Parameterbedingung hat die folgenden Attribute:
-
target
: Geben Sie den Parameter an, auf den Sie eine Bedingung anwenden möchten. -
action
: Geben Sie an, welche Aktionen ausgeführt werden sollen, wenn der Zielparameter der Bedingung entspricht. Diese Funktion unterstützt die folgenden Aktionen: -
condition
: Geben Sie eine Bedingung an, die erfüllt sein muss. -
value
: Legen Sie die Werte für das Attribut des Zielparameters in Abhängigkeit von der Aktion fest.
Hinweis
Derzeit können die Parameterbedingungen nicht auf Parameter innerhalb von Listenobjekten angewendet werden.
‘anzeigen’ oder ‘ausblenden’
Wenn die Aktion show
ist und die angegebene Bedingung True
zurückgibt, erscheint der Zielparameter in der GUI.
Wenn die Aktion hide
ist und die angegebene Bedingung True
zurückgibt, verschwindet der Zielparameter aus der GUI.
Beispiel:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: show
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Zunächst sind die Zertifikatsdetails für den Parameter security-settings
ausgeblendet. Wenn ein Benutzer SSL- oder SSL-Bridge-Protokolle auswählt, erscheinen die Zertifikatsdetails.
‘Standardwert festlegen’
Wenn die Aktion set-default
ist und die angegebene Bedingung True
zurückgibt, wird der Wert des Zielparameters auf den Standardwert gesetzt.
Beispiel 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-->
Beispiel 2:
parameters-conditions:
-
target: $parameters.port
action: set-default
value: if-then-else($parameters.protocol == "SSL", 443, 80)
<!--NeedCopy-->
Wenn ein Benutzer das SSL-Protokoll auswählt, wird der Standard-Portwert auf 443
gesetzt. Für andere Protokolle wird der Standard-Portwert auf 80
gesetzt. Beispiel 1 und 2 liefern das gleiche Ergebnis.
‘als Pflichtfeld festlegen’
Wenn die Aktion set-required
ist und die angegebene Bedingung True
zurückgibt, wird der Zielparameter zu einem Pflichtfeld für die Erstellung eines Konfigurationspakets.
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: set-required
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Zunächst sind die Zertifikatsdetails für den Parameter security-settings
möglicherweise nicht erforderlich. Wenn ein Benutzer SSL- oder SSL-Bridge-Protokolle auswählt, werden die Zertifikatsdetails zu einem Pflichtfeld für die Erstellung eines Konfigurationspakets.
‘zulässige Werte festlegen’
Wenn die Aktion set-allowed-values
ist und die angegebene Bedingung True
zurückgibt, erlaubt der Zielparameter nur die Auswahl der angegebenen Werte.
Beispiel-1:
parameters-conditions:
-
target: $parameters.app-name
action: set-allowed-values
value:
- "SSL"
condition: $parameters.lb-virtual-port == 443
<!--NeedCopy-->
Wenn ein Benutzer 443
als virtuellen Load-Balancer-Port angibt, erlaubt der Anwendungsname nur die Option SSL.
Beispiel-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-->
Dieses Beispiel handelt von der Festlegung eines Werts für ein SSL-Zertifikat. Das Wiederholungskonstrukt in den Parameterbedingungen iteriert über alle Zwischenzertifikate (im-certificates
) und prüft den Parameter link-options
jedes Zertifikats.
Wenn der Parameter link-options
einem bestimmten Wert entspricht, werden die zulässigen Werte im Parameter link-certkey
der jeweiligen Zertifikatsliste hinzugefügt.
Wenn beispielsweise der Parameter link-options
Root
ist, werden die zulässigen Werte im Parameter link-certkey
der root-certificate
-Liste hinzugefügt.
Die folgenden Notationen werden verwendet, um Zertifikate zur Liste hinzuzufügen:
-
Für Root-Zertifikate:
$parameters.root-certificates[*].certkey-name <!--NeedCopy-->
-
Für Zwischenzertifikate:
$parameters.im-certificates[*].certkey-name <!--NeedCopy-->
‘Beschriftung festlegen’
Wenn die Aktion set-label
ist und die angegebene Bedingung True
zurückgibt, ändert sich die Beschriftung des Zielparameters zu dem angegebenen Text.
Beispiel:
parameters-conditions:
-
target: $parameters.app-name
action: set-label
value: if-then-else($parameters.lb-service-type == "TCP", "TCPApp","UDPApp")
<!--NeedCopy-->
Wenn ein Benutzer das Load-Balancer-Protokoll als TCP auswählt, ändert sich die Beschriftung der Anwendung zu TCPApp. Wenn der Benutzer eine andere Option auswählt, ändert sich die Beschriftung der Anwendung zu UDPApp.
‘Beschreibung festlegen’
Wenn die Aktion set-description
ist und die angegebene Bedingung True
zurückgibt, ändert sich die Beschreibung des Zielparameters zu dem angegebenen Text. Diese Beschreibung erscheint im Tooltip eines Zielparameters.
Beispiel:
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-->
Wenn ein Benutzer das Load-Balancer-Protokoll als TCP auswählt, zeigt der Tooltip der Anwendung den Text an: Select a TCP application name
. Wenn der Benutzer eine andere Option auswählt, zeigt die Beschreibung der Anwendung Select a UDP application name
an.
‘Bereich einklappen’ oder ‘Bereich ausklappen’
Wenn die Aktion collapse-pane
ist und die angegebene Bedingung True
zurückgibt, wird der Bereich des Zielparameters in der GUI eingeklappt.
Wenn die Aktion expand-pane
ist und die angegebene Bedingung True
zurückgibt, wird der Bereich des Zielparameters in der GUI ausgeklappt.
Beispiel:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: expand-pane
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Zunächst ist der Bereich der Zertifikatsdetails für den Parameter security-settings
möglicherweise nicht ausgeklappt. Wenn ein Benutzer SSL- oder SSL-Bridge-Protokolle auswählt, wird der Bereich der Zertifikatsdetails in der GUI ausgeklappt.
‘Muster festlegen’
Wenn die Aktion set-pattern
ist und die angegebene Bedingung True
zurückgibt, wird das Feld des Zielparameters auf das angegebene Muster gesetzt.
Beispiel:
parameters-conditions:
-
target: $parameters.app-name
action: set-pattern
value: "[a-z]+"
<!--NeedCopy-->
In diesem Beispiel erlaubt der Anwendungsname nur alphabetische Kleinbuchstaben.
Verschachtelte Parameterbedingungen
In einer StyleBook-Definition können Sie eine Parameterbedingung innerhalb einer Parameterbedingung angeben. Diese Bedingungen werden als verschachtelte Parameterbedingungen bezeichnet und verwenden ein Wiederholungskonstrukt, um diese Bedingungen zu definieren. Die verschachtelten Parameterbedingungen sind nützlich, wenn Sie eine Aktion für einen Parameter von einem anderen Parameter aus anwenden möchten.
Beispiel:
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-->
In diesem Beispiel werden die Portwerte dynamisch gefüllt, wenn der Benutzer das HTTPS-Protokoll für einen virtuellen Lastausgleichsserver auswählt. Und dies gilt für jeden virtuellen Lastausgleichsserver in der Liste.