Package: gnmi-py
gNMI Python ClientInstallationPython 3General Usepip3installgnmi-pyDevelopmentgitclonehttps://gitlab.aristanetworks.com/arista-northwest/gnmi-py.git# installs pipenv and requirementsmakeinit
pipenvshellPython 2Not 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 aliasesExamplesCommand-linegnmipy-uadminveos1:6030subscribe/interfaces# using jq to filter resultsgimpy-uadminveos1:6030subscribe/system|\jq'{time: .time, path: (.prefix + .updates[].path), value: .updates[].value}'APIfromgnmi.structuresimportSubscribeOptionsfromgnmiimportcapabilites,get,delete,replace,update,subscribefromgnmi.exceptionsimportGrpcDeadlineExceededpaths=["/system"]target="veos:6030"fornotifinget(target,paths,auth=("admin","")):prefix=notif.prefixforupdateinnotif.updates:print(f"{prefix+update.path}={update.get_value()}")fordeleteinnotif.deletes:print(f"{prefix+delete}= DELETED")fornotifinsubscribe(target,paths,auth=("admin",""),options=SubscribeOptions(mode="once")):prefix=notif.prefixforupdateinnotif.updates:print(f"{prefix+update.path}={update.get_value()}")fordeleteinnotif.deletes:print(f"{prefix+delete}= __DELETED__")