3 Commits
v0.1.2 ... test

Author SHA1 Message Date
‘Renato
ce320e73d6 fix(CI): remove windows 2019, add windows 2025 and macos-15 support
Change-Id: I42424e2918844789c3eab37a1900a4ed2605716a
2025-10-27 11:51:30 +01:00
Renato Ambrosone
b6041db35d FIX: endpoints are now reachable only if version is included in the path
Change-Id: Ica5e0c52b985e234e960d712e20a6df874e66b35
2025-05-20 13:48:37 +02:00
Renato Ambrosone
256341f937 DOC: added first usage guide in README-md
Change-Id: Ieb899fc581b531d5331bd5398ac403149186ac1e
2025-05-20 13:36:50 +02:00
3 changed files with 69 additions and 13 deletions

View File

@@ -109,17 +109,20 @@ jobs:
fail-fast: false
matrix:
include:
- os: windows-2019
python_version: "3.10"
- os: windows-2022
python_version: "3.11"
- os: windows-2022
python_version: "3.12"
- os: windows-2025
python_version: "3.11"
- os: windows-2025
python_version: "3.12"
- os: macos-13
python_version: "3.12"
- os: macos-14
python_version: "3.12"
- os: macos-15
python_version: "3.12"
paywalled-platforms:
name: Tests on paywalled platforms
if: github.repository_owner == 'Telecominfraproject'

View File

@@ -1,17 +1,71 @@
# GNPy API
[![Python versions](https://img.shields.io/pypi/pyversions/gnpy)](https://pypi.org/project/gnpy/)
[![Install via pip](https://img.shields.io/pypi/v/gnpy-api)](https://pypi.org/project/gnpy-api/)
[![Python versions](https://img.shields.io/pypi/pyversions/gnpy-api)](https://pypi.org/project/gnpy-api/)
[![Gerrit](https://img.shields.io/badge/patches-via%20Gerrit-blue)](https://review.gerrithub.io/q/project:Telecominfraproject/oopt-gnpy-api)
REST API (experimental)
-----------------------
``gnpyapi`` provides an experimental api for requesting several paths at once. It is based on Flask server.
You can run it through command line or Docker.
This repository extends GNPy with additional interfaces, allowing for more flexible control and interaction with its simulation engine. These interfaces can be used to integrate GNPy into software-defined networking (SDN) architectures or other external applications.
[GNPy](https://github.com/Telecominfraproject/oopt-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.
## 🚀 Installation
### Build from Source - Option 1
Clone the repository and install the package:
```bash
python3 setup.py install
```
or if you want to install it in a docker container:
```bash
docker docker build ./ -t gnpy-api
```
### PiPy - Option 2
```bash
pip install gnpy-api
```
$ curl --location 'http://localhost:8080/api/v1/path-request' --header 'Content-Type: application/json' --data @gnpyapi/exampledata/planning_demand_example.json
TODO: api documentation, unit tests, real WSGI server with trusted certificates
### DockerHub - Option 3
Coming....
## Quick Start
tbd
## 🧪 Usage - CLI
Start the REST API server:
```bash
python ./samples/rest_example.py
```
See the help for the REST API:
```bash
python ./samples/rest_example.py -h
```
Send example data to the REST API:
```bash
curl --location 'https://localhost:8080/api/v0.1/path-request' --header 'Content-Type: application/json' --data @gnpyapi/exampledata/planning_demand_example.json -k
```
## 🧪 Usage - Docker
## 🔄 Compatibility
Different versions of this interface extension are compatible with specific versions of [GNPy](https://github.com/Telecominfraproject/oopt-gnpy). Please refer to the table below to ensure that you are using a supported version combination.
| Interface Version | Compatible GNPy Version | Notes |
|-------------------|-----------------|--------------------------------|
| `v0.1.x` | `>=2.12.1` | Initial release |
⚠️ If you use an incompatible combination, some features may not work correctly or may produce unexpected errors.
To check your GNPy version, run:
```bash
pip show gnpy
```
## 📚 Documentation
Refer to the official [GNPy documentation](https://github.com/Telecominfraproject/oopt-gnpy/tree/master/docs) for information about network modeling and simulation capabilities.
API documentation is available in the docs folder.

View File

@@ -12,7 +12,6 @@ PATH_REQUEST_BASE_PATH = '/path-request'
@app.route(API_VERSION + PATH_REQUEST_BASE_PATH, methods=['POST'])
@app.route(PATH_REQUEST_BASE_PATH, methods=['POST'])
def path_request(path_request_service: PathRequestService):
data = request.json
service = data['gnpy-api:service']