Skip to main content

Python gNMI Client

Project description

gNMI Python Client

Installation

Python 3

General Use

pip3 install gnmi-py

Development

git clone https://gitlab.aristanetworks.com/arista-northwest/gnmi-py.git
# installs pipenv and requirements
make init
pipenv shell

Python 2

Not supported :)

Usage

% gnmipy --help
usage: gnmipy [-h] [--version] [-c CONFIG] [-d] [-u USERNAME] [-p PASSWORD]
              [--encoding {json,bytes,proto,ascii,json-ietf}]
              [--prefix PREFIX] [--get-type {config,state,operational}]
              [--interval INTERVAL] [--timeout TIMEOUT]
              [--heartbeat HEARTBEAT] [--aggregate] [--suppress]
              [--mode {stream,once,poll}]
              [--submode {target-defined,on-change,sample}] [--once]
              [--qos QOS] [--use-alias]
              target {capabilities,get,subscribe} [paths [paths ...]]

positional arguments:
  target                gNMI gRPC server
  {capabilities,get,subscribe}
                        gNMI operation [capabilities, get, subscribe]
  paths

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -c CONFIG, --config CONFIG
                        Path to gNMI config file

  -d, --debug           enable gRPC debugging

  -u USERNAME, --username USERNAME
  -p PASSWORD, --password PASSWORD

Common options:
  --encoding {json,bytes,proto,ascii,json-ietf}
                        set encoding
  --prefix PREFIX       gRPC path prefix (default: <empty>)

Get options:
  --get-type {config,state,operational}

Subscribe options:
  --interval INTERVAL   sample interval in milliseconds (default: 10s)
  --timeout TIMEOUT     subscription duration in seconds (default: None)
  --heartbeat HEARTBEAT
                        heartbeat interval in milliseconds (default: None)
  --aggregate           allow aggregation
  --suppress            suppress redundant
  --mode {stream,once,poll}
                        Specify subscription mode
  --submode {target-defined,on-change,sample}
                        subscription sub-mode
  --once                End subscription after first sync_response. This is a
                        workaround for implementions that do not support
                        'once' subscription mode
  --qos QOS             DSCP value to be set on transmitted telemetry
  --use-alias           use aliases

Examples

Command-line

gnmipy veos1:6030 subscribe /interfaces

API

from gnmi.session import Session
from gnmi.exceptions import GrpcDeadlineExceeded


metadata = [
    ("username", "admin"),
    ("password", "")
]


paths = ["/config", "/memory/state"]
target = ("veos", 6030)
sess = Session(target, metadata=metadata)


for notif in sess.get(paths, options={"prefix": "/system"}):
    prefix = notif.prefix
    for update in notif.updates:
        path = prefix + update.path
        print(path, update.value)

paths = ["/system/processes/process"]
try:
    for resp in sess.subscribe(paths, options={"timeout": 5}):
        prefix = resp.update.prefix
        for update in resp.update.updates:
            path = prefix + update.path
            print(str(path), update.value)
except GrpcDeadlineExceeded:
    print("User defined timeout exceeded.")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gnmi-py-0.4.1.tar.gz (25.7 kB view hashes)

Uploaded Source

Built Distribution

gnmi_py-0.4.1-py3-none-any.whl (30.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page