StyleBook configuration

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.

Note

The binding between configuration objects (for example, bind a certkey to 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 enable, disable, link, unlink, import, export, create, archive, and apply.

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.

Example:

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.

Create a StyleBook to perform non-CRUD operations