This repository extends GNPy with a FastAPI-based HTTP service, allowing more flexible control and interaction with its simulation engine. The service can be used to integrate GNPy into software-defined networking (SDN) architectures or other external applications.
GNPy is an open-source Python-based library that models and evaluates the performance of optical networks. It is widely used for path computation, QoT (Quality of Transmission) estimation, and network planning.
Clone the repository and install the package:
python3 setup.py installor if you want to install it in a docker container:
docker build ./ -t gnpy-apipip install gnpy-apiStart the FastAPI server:
python ./samples/rest_example.pyOpenAPI docs are available at http://localhost:8080/docs.
Send example data to the API:
curl --location 'http://localhost:8080/api/v1.0/path-request' --header 'Content-Type: application/json' --data @gnpyapi/exampledata/planning_demand_example.jsonThe example server runs over HTTP. Use a reverse proxy or uvicorn TLS settings for HTTPS.
docker run --rm -p 8080:8080 gnpy-apiDifferent versions of this interface extension are compatible with specific versions of GNPy. Please refer to the table below to ensure that you are using a supported version combination.
| Interface Version | Compatible GNPy Version | Notes |
|---|---|---|
v1.0.x |
2.14 |
FastAPI service, OpenAPI support |
v0.2.x |
2.14 |
YANG model validation |
v0.1.x |
>=2.12.1 |
Initial release |
To check your GNPy version, run:
pip show gnpyRefer to the official GNPy documentation for information about network modeling and simulation capabilities.
API documentation is available in the docs folder.