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: 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.