gNMI Service Provider

class ydk.gnmi.providers.gNMIServiceProvider(repo, address, port=57400, username, password, server_certificate="", private_key="")

A service provider, which allows YDK connect to a gNMI server. By default, the provider works in non-secure mode (tls is off). In order to enable secure mode connection the user must provide the gNMI server certificate of authorization (public key) and optionally the client (YDK application host) private key.

Parameters:
  • repo – Instance of Repository with path to local directory containing the the ydk yang model along with all the yang models supported on the gNMI server.

  • address – (str) Host address of the device supporting a gNMI interface

  • port – (int)Port on which the gNMI interface can be accessed on the device. If not specified, the default value of 57400 is assigned.

  • username – (str) Username.

  • password – (str) Password.

  • server_certificate – (str) Full path to a file, which contains server certificate of authorization (public key). If not specified, it is assumed non-secure connection to gNMI server.

  • private_key – (str) Full path to a file, which contains private key of the application host. If not specified and server_certificate is defined (secure connection), the GRPC internally defined private key is used.

Examples

To enable YDK logging include the following code:

1import logging
2logger = logging.getLogger("ydk")
3logger.setLevel(logging.INFO)
4handler = logging.StreamHandler()
5formatter = logging.Formatter(("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
6handler.setFormatter(formatter)
7logger.addHandler(handler)

To enable GRPC trace set environment variables as followed:

1export GRPC_VERBOSITY=debug
2export GRPC_TRACE=transport_security

To get server certificate, you need to retrieve the ems.pem file from the IOS XR device (after enabling gRPC/TLS) and put it to YDK application host in a folder, which is specific to the device. You can find the ems.pem file on the router in either /misc/config/grpc/ or /var/xr/config/grpc folder.

Example of instantiating and using objects of gNMIServiceProvider is shown below (assuming you have openconfig bundle installed).

 1from ydk.models.openconfig import openconfig_bgp
 2from ydk.path import Repository
 3from ydk.gnmi.providers import gNMIServiceProvider
 4from ydk.services import CRUDService
 5
 6# Create repository with location of directory where yang models from the server are downloaded
 7repository = Repository('/Users/test/yang_models_location')
 8ca_file_path = '/Users/test/device-ip/ems.pem'
 9
10# Instantiate provider with non-secure connection to gNMI server
11provider = gNMIServiceProvider(repo=repository, address='10.0.0.1', port=57400,
12                               username='admin', password='admin', server_certificate=ca_file_path)
13
14# Define filter
15bgp = openconfig_bgp.Bgp()
16
17# Run CRUD read opearaion
18crud = CRUDService()
19bgp_read = crud.read(provider, bgp) # Perform read operation