Parameterbedingungen
In einer StyleBook-Definition definieren Parameter die Eingabe, die StyleBook-Benutzer zum Erstellen eines Konfigurationspakets bereitstellen. Manchmal möchten Sie das Verhalten der Parameter möglicherweise wie folgt ändern:
- Zeigen Sie einem Benutzer einige Parameter nur an, wenn eine Bedingung erfüllt ist.
- Die zulässigen Werte eines Parameters müssen von einem anderen Parameter abhängen.
- Stellen Sie einen Parameter nur unter bestimmten Bedingungen als obligatorisch ein.
In diesen Fällen verwenden Sie den Abschnitt parameters-conditions
, um die Parameterbedingungen zu definieren. Eine Parameterbedingung hat folgende Eigenschaften:
-
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
: Setzt die Werte für das Zielparameter-Attribut abhängig von der Aktion.
Hinweis
Derzeit können die Parameterbedingungen nicht für die Parameter in Listenobjekten angewendet werden.
‘show’ oder ‘hide’
Wenn die Aktion show
ist und die angegebene Bedingung True
zurückgibt, wird der Zielparameter in der GUI angezeigt.
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, werden die Zertifikatsdetails angezeigt.
‘set-default’
Wenn die Aktion set-default
ist und die angegebene Bedingung True
zurückgibt, wird der Wert des Zielparameters auf den Standardwert festgelegt.
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
value: if-then-else($parameters.protocol == "SSL", 443, 80)
<!--NeedCopy-->
Wenn ein Benutzer das SSL-Protokoll auswählt, ist der Standardportwert auf festgelegt 443
. Für andere Protokolle ist der Standardportwert auf festgelegt 80
. Beispiel 1 und 2 liefert dasselbe Ergebnis.
‘set-required’
Wenn die Aktion set-required
ist und die angegebene Bedingung True
zurückgibt, wird der Zielparameter zu einem erforderlichen Feld, um ein Konfigurationspaket zu erstellen.
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: set-required
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Zunächst sind die Zertifikatsdetails möglicherweise nicht für den Parameter security-settings
erforderlich. Wenn ein Benutzer SSL- oderSSL-Bridge-Protokolle** auswählt, werden die Zertifikatsdetails zu einem Pflichtfeld, um ein Konfigurationspaket zu erstellen.
‘set-allowed-values’
Wenn die Aktion set-allowed-values
ist und die angegebene Bedingung True
zurückgibt, können Sie mit dem Zielparameter nur angegebene Werte auswählen.
Beispiel-1:
parameters-conditions:
-
target: $parameters.app-name
action: set-allowed-values
value:
- "SSL"
condition: $parameters.lb-virtual-port == 443
<!--NeedCopy-->
Wenn ein Benutzer als virtuellen Load-Balancer-Port 443
angibt, ist für den Namen der Anwendung nur die Option SSL zugelassen.
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-->
In diesem Beispiel geht es darum, einen Wert für ein SSL-Zertifikat festzulegen. Die Wiederholungskonstruktion unter Parameterbedingungen wiederholt über alle Zwischenzertifikate (im-certificates
) und überprüft den Parameter link-options
jedes Zertifikats.
Stimmt der Parameter link-options
mit einem bestimmten Wert überein, werden die erlaubten Werte im Parameter link-certkey
zur jeweiligen Zertifikatsliste hinzugefügt.
Wenn der Parameter link-options
beispielsweise Root
ist, werden die zulässigen Werte im Parameter link-certkey
der Liste root-certificate
hinzugefügt.
Die folgenden Notationen werden verwendet, um der Liste Zertifikate hinzuzufügen:
-
Für Stammzertifikate:
$parameters.root-certificates[*].certkey-name <!--NeedCopy-->
-
Für Zwischenzertifikate:
$parameters.im-certificates[*].certkey-name <!--NeedCopy-->
‘set-label’
Wenn die Aktion set-label
ist und die angegebene Bedingung True
zurückgibt, ändert sich die Beschriftung des Zielparameters in den 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 Bezeichnung der Anwendung in TCPApp. Wenn der Benutzer eine andere Option auswählt, ändert sich die Bezeichnung der Anwendung in UDPApp.
‘set-description’
Wenn die Aktion set-description
ist und die angegebene Bedingung True
zurückgibt, ändert sich die Beschreibung des Zielparameters in den angegebenen Text. Diese Beschreibung wird in der QuickInfo eines Zielparameters angezeigt.
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 TCPauswählt, wird im Tooltip der Anwendung ein Text angezeigt: Select a TCP application name
. Wenn der Benutzer eine andere Option auswählt, wird die Beschreibung der Anwendung angezeigt Select a UDP application name
.
‘collapse-pane’ oder ‘expand-pane’
Wenn die Aktion collapse-pane
ist und die angegebene Bedingung True
zurückgibt, wird der Bereich des Zielparameters in der GUI reduziert.
Wenn die Aktion expand-pane
ist und die angegebene Bedingung True
zurückgibt, wird der Bereich des Zielparameters in der GUI erweitert.
Beispiel:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: expand-pane
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
Zunächst wird der Bereich mit den Zertifikatsdetails möglicherweise nicht für den Parameter security-settings
erweitert. Wenn ein Benutzer SSL- oder SSL-Bridge-Protokolle auswählt, wird der Bereich mit den Zertifikatsdetails auf der GUI erweitert.
‘set-pattern’
Wenn die Aktion set-pattern
ist und die angegebene Bedingung True
zurückgibt, wird das Zielparameterfeld auf das angegebene Muster festgelegt.
Beispiel:
parameters-conditions:
-
target: $parameters.app-name
action: set-pattern
value: "[a-z]+"
<!--NeedCopy-->
In diesem Beispiel erlaubt der Name der Anwendung 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 aus einem anderen Parameter 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 aufgefüllt, wenn der Benutzer das HTTPS-Protokoll für einen virtuellen Lastausgleichsserver auswählt. Und es gilt für jeden virtuellen Lastausgleichsserver in der Liste.