Parameter conditions
Parameter conditions are used to modify the behavior of certain parameters in the StyleBook definition. Parameters in a StyleBook definition are the input provided to create a config pack. Use parameters-conditions
to define a parameter condition in the definition.
A parameter can have many constraints in the StyleBook definition. The parameter conditions are used to resolve conflicts when a user changes the parameter behavior. For example, when a user selects the SSL protocol, the certificate details are required to create a config pack. However, the certificate details might not be set as the required field at first.
The parameter condition has the following attributes:
-
target
: Specify the target parameter to which you want to apply an action. You can specify multiple target parameters. -
action
: Specify what action to take on the target parameters. Parameter conditions support the following actions: -
condition
: Optional, specify a condition to apply an action for the specified target parameters. If you do not specify a condition, the action is directly applied on the target parameters. -
value
: Set the values for the target parameters attribute depending on the action.
Note:
Currently, the parameter conditions cannot be applied for the parameters within list objects.
‘augment-allowed-values’
When the action is augment-allowed-values
, the target parameter appears as a drop-down menu in the GUI. The drop-down menu is set with the values defined in the value
attribute of the StyleBook definition.
Example:
parameters-conditions:
-
target: $parameters.rewritepolicy.action
action: augment-allowed-values
value: $parameters.rewriteaction
<!--NeedCopy-->
‘show’ or ‘hide’
When the action is show
and the specified condition returns True
, the target parameter appears on the GUI.
When the action is hide
and the specified condition returns True
, the target parameter disappears from the GUI.
Example:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: show
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
At first, the certificate details are hidden for the security-settings
parameter. When a user selects SSL or SSL-Bridge protocols, the certificate details appear.
‘set-default’
When the action is set-default
and the specified condition returns True
, the target parameter’s value is set to the default value.
Example 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-->
Example 2:
parameters-conditions:
-
target: $parameters.port
action: set-default-value
value: if-then-else($parameters.protocol == "SSL", 443, 80)
<!--NeedCopy-->
When a user selects the SSL protocol, the default port value is set to 443
. For other protocols, the default port value is set to 80
. Example 1 and 2 gives you the same result.
‘set-required’
When the action is set-required
and the specified condition returns True
, the target parameter becomes a required field to create a config pack.
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: set-required
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
At first, the certificate details might not be required for the security-settings
parameter. When a user selects SSL or SSL-Bridge protocols, the certificate details become a required field to create a config pack.
‘set-allowed-values’
When the action is set-allowed-values
and the specified condition returns True
, the target parameter allows you to select only specified values.
Example:
parameters-conditions:
-
target: $parameters.app-name
action: set-allowed-values
value:
- "SSL"
condition: $parameters.lb-virtual-port == 443
<!--NeedCopy-->
When a user specifies 443
as a load-balancer virtual port, the application’s name allows only SSL option.
‘set-label’
When the action is set-label
and the specified condition returns True
, the target parameter’s label changes to the specified text.
Example:
parameters-conditions:
-
target: $parameters.app-name
action: set-label
value: if-then-else($parameters.lb-service-type == "TCP", "TCPApp","UDPApp")
<!--NeedCopy-->
When a user selects the load-balancer protocol as TCP, the application’s label changes to TCPApp. If the user selects a different option, the application’s label changes to UDPApp.
‘set-description’
When the action is set-description
and the specified condition returns True
, the target parameter’s description changes to the specified text. This description appears in the tool tip of a target parameter.
Example:
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-->
When a user selects the load-balancer protocol as TCP, the application’s tool tip displays a text: Select a TCP application name
. If the user selects a different option, the application’s description displays Select a UDP application name
.
‘collapse-pane’ or ‘expand-pane’
When the action is collapse-pane
and the specified condition returns True
, the target parameter’s pane collapses in the GUI.
When the action is expand-pane
and the specified condition returns True
, the target parameter’s pane expands in the GUI.
Example:
parameters-conditions:
-
target: $parameters.security-settings.cert-details
action: expand-pane
condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->
At first, the certificate details pane might not be expanded for the security-settings
parameter. When a user selects SSL or SSL-Bridge protocols, the certificate details pane expands on the GUI.
‘set-pattern’
When the action is set-pattern
and the specified condition returns True
, the target parameter field is set to the specified pattern.
Example:
parameters-conditions:
-
target: $parameters.app-name
action: set-pattern
value: "[a-z]+"
<!--NeedCopy-->
In this example, the application’s name allow only lowercase alphabetical characters.
Nested parameter conditions
In a StyleBook definition, you can specify a parameter condition within a parameter condition. These conditions are called as nested parameter conditions and use a repeat construct to define these conditions. The nested parameter conditions are useful when you want to apply an action for a parameter from another parameter.
Example:
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 this example, when the user selects the HTTPS protocol for a load-balancing virtual server, the port values are dynamically populated. And, it applies for each load-balancing virtual server in the list.