mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-11-01 18:47:48 +00:00
Add equipments and topolgies endpoints
- add POST, PUT, DELETE on equipments - add POST, PUT, GET, DELETE on topogies - path-computation request body can now have equipment id and/or topology id instead of full data - activate embedded https of Flask while waiting for real trusted certificate - update readme - add request payload samples in yang directory - equipment data are encrypted with Fernet Signed-off-by: manuedelf <59697943+edelfour@users.noreply.github.com>
This commit is contained in:
62
gnpy/api/service/topology_service.py
Normal file
62
gnpy/api/service/topology_service.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# coding: utf-
|
||||
import json
|
||||
import os
|
||||
import uuid
|
||||
|
||||
from gnpy.api.exception.topology_error import TopologyError
|
||||
from gnpy.api.service import config_service
|
||||
|
||||
|
||||
def save_topology(topology):
|
||||
"""
|
||||
Save topology to file.
|
||||
@param topology: json content
|
||||
@return: a UUID identifier to identify the topology
|
||||
"""
|
||||
topology_identifier = str(uuid.uuid4())
|
||||
# TODO: validate json content
|
||||
_write_topology(topology, topology_identifier)
|
||||
return topology_identifier
|
||||
|
||||
|
||||
def update_topology(topology, topology_identifier):
|
||||
"""
|
||||
Update topology with identifier topology_identifier.
|
||||
@param topology_identifier: the identifier of the topology to be updated
|
||||
@param topology: json content
|
||||
@return: a UUID identifier to identify the topology
|
||||
"""
|
||||
# TODO: validate json content
|
||||
_write_topology(topology, topology_identifier)
|
||||
return topology_identifier
|
||||
|
||||
|
||||
def _write_topology(topology, topology_identifier):
|
||||
topology_dir = config_service.get_topology_dir()
|
||||
with(open(os.path.join(topology_dir, '.'.join([topology_identifier, 'json'])), 'w')) as file:
|
||||
json.dump(topology, file)
|
||||
|
||||
|
||||
def get_topology(topology_id: str) -> dict:
|
||||
"""
|
||||
Get the topology with id topology_id
|
||||
@param topology_id:
|
||||
@return: the topology in json format
|
||||
"""
|
||||
topology_dir = config_service.get_topology_dir()
|
||||
topology_file = os.path.join(topology_dir, '.'.join([topology_id, 'json']))
|
||||
if not os.path.exists(topology_file):
|
||||
raise TopologyError('Topology with id {} does not exist '.format(topology_id))
|
||||
with(open(topology_file, 'r')) as file:
|
||||
return json.load(file)
|
||||
|
||||
|
||||
def delete_topology(topology_id: str):
|
||||
"""
|
||||
Delete topology with id topology_id
|
||||
@param topology_id:
|
||||
"""
|
||||
topology_dir = config_service.get_topology_dir()
|
||||
topology_file = os.path.join(topology_dir, '.'.join([topology_id, 'json']))
|
||||
if os.path.exists(topology_file):
|
||||
os.remove(topology_file)
|
||||
Reference in New Issue
Block a user