Skip to content

Generate

Description#

Most gNMI targets use YANG as a modeling language for their datastores. It order to access and manipulate the stored data (Get, Set, Subscribe), a tool should be aware of the underlying YANG model, be able to generate paths pointing to the desired gNMI objects as well as building configuration payloads matching data instances on the targets.

The generate command takes the target's YANG models as input and generates:

  • Paths in xpath or gNMI formats.
  • Configuration payloads that can be used as update or replace input files for the Set command.
  • A Set request file that can be used as a template with the Set command.

Aliases: gen

Usage#

gnmic [global-flags] generate [local-flags]

or

gnmic [global-flags] generate [local-flags] sub-command [sub-command-flags]

Persistent Flags#

output#

The --output flag specifies the file to which the generated output will be written, defaults to stdout

json#

The --json flag, if present changes the output format from YAML to JSON.

Local Flags#

path#

The --path flag specifies the path whose payload (JSON/YAML) will be generated.

Defaults to /

config-only#

The --config-only flag, if present instruct gnmic to generate JSON/YAML payloads from YANG nodes not marked as config false.

Sub Commands#

Path#

The path sub command is an alias for the gnmic path command.

Set-request#

The set-request sub command generates a Set request file given a list of update and/or replace paths.

Examples#

Openconfig#

YANG repo: openconfig/public

Clone the OpenConfig repository:

git clone https://github.com/openconfig/public
cd public
gnmic --encoding json_ietf \
          generate  \
          --file release/models \
          --dir third_party \
          --exclude ietf-interfaces \
          --path /interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address
- config:
    ip: ""
    prefix-length: ""
  ip: ""
  vrrp:
    vrrp-group:
    - config:
        accept-mode: "false"
        advertisement-interval: "100"
        preempt: "true"
        preempt-delay: "0"
        priority: "100"
        virtual-address: ""
        virtual-router-id: ""
      interface-tracking:
        config:
          priority-decrement: "0"
          track-interface: ""
      virtual-router-id: ""