ipld-eth-server/vendor/github.com/aristanetworks/goarista/cmd/gnmi/README.md
Rob Mulholand 560305f601 Update dependencies
- uses newer version of go-ethereum required for go1.11
2018-09-13 16:14:35 -05:00

5.5 KiB

gnmi

gnmi is a command-line client for interacting with a gNMI service.

Installation

After installing Go run:

go get github.com/aristanetworks/goarista/cmd/gnmi

This will install the gnmi binary in the bin directory under GOPATH.

Usage

$ gnmi [OPTIONS] [OPERATION]

When running on the switch in a non-default VRF:

$ ip netns exec ns-<VRF> gnmi [OPTIONS] [OPERATION]

Options

  • -addr [<VRF-NAME>/]ADDR:PORT
    Address of the gNMI endpoint (REQUIRED) with VRF name (OPTIONAL)
  • -username USERNAME
    Username to authenticate with
  • -password PASSWORD
    Password to authenticate with
  • -tls
    Enable TLS
  • -cafile PATH
    Path to server TLS certificate file
  • -certfile PATH
    Path to client TLS certificate file
  • -keyfile PATH
    Path to client TLS private key file

Operations

gnmi supports the following operations: capabilites, get, subscribe, update, replace, and delete.

capabilities

capabilities prints the result of calling the Capabilities gNMI RPC.

Example:

$ gnmi [OPTIONS] capabilities

get

get requires a path and calls the Get gNMI RPC.

Example:

Get all configuration in the default network instance:

$ gnmi [OPTIONS] get '/network-instances/network-instance[name=default]'

subscribe

subscribe requires a path and calls the Subscribe gNMI RPC. This command will continuously print out results until signalled to exit, for example by typing Ctrl-C.

Example:

Subscribe to interface counters:

$ gnmi [OPTIONS] subscribe '/interfaces/interface[name=*]/state/counters'

update/replace/delete

update, replace, and delete are used to modify the configuration of a gNMI endpoint. All of these operations take a path that must specify a single node element. In other words all list members must be fully-specified.

delete takes a path and will delete that path.

Example:

Delete BGP configuration in the default network instance:

$ gnmi [OPTIONS] delete '/network-instances/network-instance[name=default]/protocols/protocol[name=BGP][identifier=BGP]/'

update and replace both take a path and a value in JSON format. The JSON data may be provided in a file. See here for documentation on the differences between update and replace.

Examples:

Disable interface Ethernet3/42:

gnmi [OPTIONS] update '/interfaces/interface[name=Ethernet3/42]/config/enabled' 'false'

Replace the BGP global configuration:

gnmi [OPTIONS] replace '/network-instances/network-instance[name=default]/protocols/protocol[name=BGP][identifier=BGP]/bgp/global' '{"config":{"as": 1234, "router-id": "1.2.3.4"}}'

Note: String values need to be quoted if they look like JSON. For example, setting the login banner to tor[13]:

gnmi [OPTIONS] update '/system/config/login-banner '"tor[13]"'

JSON in a file

The value argument to update and replace may be a file. The content of the file is used to make the request.

Example:

File path/to/subintf100.json contains the following:

{
  "subinterface": [
    {
      "config": {
        "enabled": true,
        "index": 100
      },
      "index": 100
    }
  ]
}

Add subinterface 100 to interfaces Ethernet4/1/1 and Ethernet4/2/1 in one transaction:

gnmi [OPTIONS] update '/interfaces/interface[name=Ethernet4/1/1]/subinterfaces' path/to/subintf100.json \
               update '/interfaces/interface[name=Ethernet4/2/1]/subinterfaces' path/to/subintf100.json

CLI requests

gnmi offers the ability to send CLI text inside an update or replace operation. This is achieved by doing an update or replace and specifying "origin=cli" along with an empty path and a set of configure-mode CLI commands separated by \n.

Example:

Configure the idle-timeout on SSH connections

gnmi [OPTIONS] update 'cli' 'management ssh
idle-timeout 300'

P4 Config

gnmi offers the ability to send p4 config files inside a replace operation. This is achieved by doing a replace and specifying "origin=p4_config" along with the path of the p4 config file to send.

Example:

Send the config.p4 file

gnmi [OPTIONS] replace 'origin=p4_config' 'config.p4'

Paths

Paths in gnmi use a simplified xpath style. Path elements are separated by /. Selectors may be used on list to select certain members. Selectors are of the form [key-leaf=value]. All members of a list may be selected by not specifying any selectors, or by using a * as the value in a selector. The following are equivalent:

  • /interfaces/interface
  • /interfaces/interface[name=*]

All characters, including / are allowed inside a selector value. The character ] must be escaped, for example [key=[\]] selects the element in the list whose key leaf is value [].

See more examples of paths in the examples above.

See here for more information.