Create a StyleBook to perform non-CRUD operations
StyleBooks manage Citrix ADC configurations by computing the necessary configuration objects on the Citrix ADC instances. These objects are added, updated, or removed from the instance each time you create or update a ConfigPack. That is when you specify the “desired state.”
However, some Citrix ADC configuration objects support a few operations other than create, update, or delete (CRUD operations). For example, a load balancer object (
lbvserver) or a Citrix ADC feature object (
nsfeature) can support the “enable” or “disable” operation. Similarly, Citrix ADC
certkeys support the “link” and “unlink” operation to link or unlink a certificate to another certificate. These operations on Citrix ADC objects are called as non-CRUD operations. This section describes how to perform non-CRUD operations on configuration objects that support them using StyleBooks.
The binding between configuration objects (for example, bind a
lbvserver) is not considered a non-CRUD operation. This is because NITRO bindings are represented as configuration objects in their own right. These objects are created and deleted like any other Citrix ADC configuration object.
Supporting the non-CRUD operations
A construct called
meta-properties is added in the component at the same level as the
properties construct. The supported attribute supported in this construct is called
action. This attribute can take values like
components: - name: my-lbvserver-comp type: ns::lbvserver meta-properties action: enable properties: name: $parameters.name servicetype: HTTP ipv46: $parameters.ip port: 80 lbmethod: $parameters.lb-alg <!--NeedCopy-->
In this example, the
my-lbvserver-comp component is of the type
ns::lbvserver. The “ns” is the prefix that refers to the namespace netscaler.nitro.config and version ** 10.5 that you had specified in the import-stylebooks section. The
lbvserver is a NITRO resource in this namespace. As an implicit action, the
lbvserver is first created by the StyleBook. Then the “enable” operation is performed on it.
The action specified in the meta-properties is performed on the configuration object only during the creation of the ConfigPack. Updates to the ConfigPack do not perform non-CRUD actions.
You can specify expressions for a meta-property. These expressions dynamically apply the valid meta-property actions for ADC objects.
parameters: - name: meta-action-lbvserver type: string default: disable components: - name: c1 type: ns::lbvserver meta-properties: action: $parameters.meta-action-lbvserver properties: name: $parameters.lbvserver ipv46: $parameters.ip port: 80 servicetype: HTTP <!--NeedCopy-->
In this example, a StyleBook user can specify a valid meta property action while creating a configuration pack.