create decorator
  • 29 Oct 2024
  • Dark
    Light
  • PDF

create decorator

  • Dark
    Light
  • PDF

Article summary

iagctl create decorator

Create a new decorator

Synopsis

The command will create a decorator in the gateway data store. Decorators can be attached to services when they are created, and they allow you to validate any data that is passed into a service when executed via the run command.

Decorators utilize JSON Schema to actually perform input validation. Consider a gateway service that takes in two inputs: interface and device_type. You can create the following JSON schema document to validate those inputs:

{
  "$id": "root",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "interface": {
      "type": "string",
      "description": "The interface to update"
    },
    "device_type": {
      "type": "string",
      "description": "The type of device",
      "enum": ["ios", "eos", "nxos"]
    }
  },
  "required": [
    "interface",
    "device_type"
  ],
  "additionalProperties": false
}

Later, when you create a new service, the decorator can be specified. The decorator can then validate that both interface and device_type were correctly passed in using the --set flag at runtime as shown below.

>_ iagctl run pythonscript example-service-with-deco \
--set interface=1/1/1 \
--set device_type=eos

If any issues are found with the incoming data, they will be reported back to the user as an error.

Specifying Properties

Each input to your service will exist within the properties object of the JSON Schema document. Pay special attention to the following fields and how they are used within gateway.

Field Description
type The type of data you are passing into the service. Can be one of the following options: string, number, integer, object, array, boolean, null
enum Denotes a limited set of values that will be accepted.

Many other validations can be performed and are available on the JSON Schema JSON Schema website.

iagctl create decorator <decorator-name> --schema <string> [flags]

Examples

Create Decorator via JSON Schema File

Consider a JSON Schema document called my_decorator.json. You can create a decorator from this file using the syntax shown below.

>_ iagctl create decorator my-decorator \
--schema @my_decorator.json

A schema file formatted in JSON would be typical, but YAML formatting is also accepted.

Create Decorator via Direct JSON

You can also create a decorator by specifying the contents of a JSON Schema document directly into the CLI. Only JSON is accepted here.

>_ iagctl create decorator my-decorator \
--schema '{"$id":"root","$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"interface":{"type":"string"}}}'

Options

    --description string   A brief description of the decorator
    -h, --help             Help for decorator
    --schema string        The schema of the decorator. This can be inline json or can reference a file by prefixing '@'.
    --tag stringArray      Metadata tag(s) to associate with the decorator

Options Inherited from Parent Commands

  --config string   Path to the configuration file  
  --raw             Displays the result of the command in its raw format
  --verbose         Enable verbose output

CLI References

See related create commands:

For all CLI commands see → Command References Index


Was this article helpful?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.