Python Development Environment#
Work in progress
This tutorial might be outdated. Please check Go tutorial for the latest updates until this version is updated.
Although every developer's environment is different and is subject to a personal preference, we will provide some recommendations for a Python toolchain setup suitable for the development of NDK applications.
Environment components#
The toolchain that can be used to develop Python-based NDK apps consists of the following components:
- Python programming language - Python interpreter, toolchain, and standard library. Python2 is not supported.
- Python NDK bindings - generated data access classes for gRPC based NDK service.
Project structure#
Here is an example project structure that you can use for the NDK agent development:
. # Root of a project
βββ app # Contains agent core logic
βββ yang # A directory with agent YANG modules
βββ agent.yml # Agent yml config file
βββ main.py # Package main that calls agent logic
βββ requirements.txt # Python packages required by the app logic
NDK language bindings#
As explained in the NDK Architecture section, NDK is a gRPC based service. The language bindings have to be generated from the source proto files to use gRPC services in a Python program.
Nokia provides both the proto files for the SR Linux NDK service and also NDK Python language bindings.
With the provided Python bindings, the NDK can be installed with pip
# it is a good practice to use virtual env
sudo python3 -m venv /opt/myApp/venv
# activate the newly created venv
source /opt/myApp/venv/bin/activate
# update pip/setuptools in the venv
pip3 install -U pip setuptools
# install the latest pip package of the NDK
pip install srlinux-ndk # (1)
- To install a specific version of the NDK check the NDK install instructions on the NDK github repo.
Once installed, NDK services are imported in a Python project like that:
- The example is provided for
appid_service_pb2
service but every service is imported the same way.