From 787e7f5ae7124facb4d783fd7d894768d9bf2ef8 Mon Sep 17 00:00:00 2001 From: sgambelluri <andrea.sgambelluri@cnit.it> Date: Fri, 30 May 2025 09:27:44 +0200 Subject: [PATCH] working with flexi grid environemnt --- aa | 0 bb | 0 deploy/all.sh | 4 +- deploy/demo.sh | 230 ++++++++++++++++++ my_deploy.sh | 2 +- scripts/bb | 69 ++++++ src/common/Constants.py | 2 +- src/opticalcontroller/RSA.py | 44 ++-- .../service/ServiceServiceServicerImpl.py | 60 +++-- src/service/service/tools/OpticalTools.py | 2 +- 10 files changed, 358 insertions(+), 55 deletions(-) create mode 100644 aa create mode 100644 bb create mode 100755 deploy/demo.sh create mode 100644 scripts/bb diff --git a/aa b/aa new file mode 100644 index 000000000..e69de29bb diff --git a/bb b/bb new file mode 100644 index 000000000..e69de29bb diff --git a/deploy/all.sh b/deploy/all.sh index f3075949e..764ec7dbc 100755 --- a/deploy/all.sh +++ b/deploy/all.sh @@ -213,10 +213,10 @@ export GRAF_EXT_PORT_HTTP=${GRAF_EXT_PORT_HTTP:-"3000"} ./deploy/qdb.sh # Deploy Apache Kafka -./deploy/kafka.sh +#./deploy/kafka.sh #Deploy Monitoring (Prometheus, Mimir, Grafana) -./deploy/monitoring.sh +#./deploy/monitoring.sh # Expose Dashboard ./deploy/expose_dashboard.sh diff --git a/deploy/demo.sh b/deploy/demo.sh new file mode 100755 index 000000000..12e9c8561 --- /dev/null +++ b/deploy/demo.sh @@ -0,0 +1,230 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +######################################################################################################################## +# Read deployment settings +######################################################################################################################## + + +# ----- TeraFlowSDN ------------------------------------------------------------ + +# If not already set, set the URL of the Docker registry where the images will be uploaded to. +# By default, assume internal MicroK8s registry is used. +export TFS_REGISTRY_IMAGES=${TFS_REGISTRY_IMAGES:-"http://localhost:32000/tfs/"} + +# If not already set, set the list of components, separated by spaces, you want to build images for, and deploy. +# By default, only basic components are deployed +export TFS_COMPONENTS=${TFS_COMPONENTS:-"context device pathcomp service slice nbi webui load_generator"} + +# Uncomment to activate Monitoring (old) +#export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring" + +# Uncomment to activate Monitoring Framework (new) +#export TFS_COMPONENTS="${TFS_COMPONENTS} kpi_manager kpi_value_writer kpi_value_api telemetry analytics" + +# Uncomment to activate BGP-LS Speaker +#export TFS_COMPONENTS="${TFS_COMPONENTS} bgpls_speaker" + +# Uncomment to activate Optical Controller +# To manage optical connections, "service" requires "opticalcontroller" to be deployed +# before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the +# "opticalcontroller" only if "service" is already in TFS_COMPONENTS, and re-export it. +#if [[ "$TFS_COMPONENTS" == *"service"* ]]; then +# BEFORE="${TFS_COMPONENTS% service*}" +# AFTER="${TFS_COMPONENTS#* service}" +# export TFS_COMPONENTS="${BEFORE} opticalcontroller service ${AFTER}" +#fi + +# Uncomment to activate ZTP +#export TFS_COMPONENTS="${TFS_COMPONENTS} ztp" + +# Uncomment to activate Policy Manager +#export TFS_COMPONENTS="${TFS_COMPONENTS} policy" + +# Uncomment to activate Optical CyberSecurity +#export TFS_COMPONENTS="${TFS_COMPONENTS} dbscanserving opticalattackmitigator opticalattackdetector opticalattackmanager" + +# Uncomment to activate L3 CyberSecurity +#export TFS_COMPONENTS="${TFS_COMPONENTS} l3_attackmitigator l3_centralizedattackdetector" + +# Uncomment to activate TE +#export TFS_COMPONENTS="${TFS_COMPONENTS} te" + +# Uncomment to activate Forecaster +#export TFS_COMPONENTS="${TFS_COMPONENTS} forecaster" + +# Uncomment to activate E2E Orchestrator +#export TFS_COMPONENTS="${TFS_COMPONENTS} e2e_orchestrator" + +# If not already set, set the tag you want to use for your images. +export TFS_IMAGE_TAG=${TFS_IMAGE_TAG:-"dev"} + +# If not already set, set the name of the Kubernetes namespace to deploy TFS to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +# If not already set, set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS=${TFS_EXTRA_MANIFESTS:-""} + +# If not already set, set the new Grafana admin password +export TFS_GRAFANA_PASSWORD=${TFS_GRAFANA_PASSWORD:-"admin123+"} + +# If not already set, disable skip-build flag to rebuild the Docker images. +# If TFS_SKIP_BUILD is "YES", the containers are not rebuilt-retagged-repushed and existing ones are used. +export TFS_SKIP_BUILD=${TFS_SKIP_BUILD:-""} + + +# ----- CockroachDB ------------------------------------------------------------ + +# If not already set, set the namespace where CockroackDB will be deployed. +export CRDB_NAMESPACE=${CRDB_NAMESPACE:-"crdb"} + +# If not already set, set the external port CockroackDB Postgre SQL interface will be exposed to. +export CRDB_EXT_PORT_SQL=${CRDB_EXT_PORT_SQL:-"26257"} + +# If not already set, set the external port CockroackDB HTTP Mgmt GUI interface will be exposed to. +export CRDB_EXT_PORT_HTTP=${CRDB_EXT_PORT_HTTP:-"8081"} + +# If not already set, set the database username to be used by Context. +export CRDB_USERNAME=${CRDB_USERNAME:-"tfs"} + +# If not already set, set the database user's password to be used by Context. +export CRDB_PASSWORD=${CRDB_PASSWORD:-"tfs123"} + +# If not already set, set CockroachDB installation mode. Accepted values are: 'single' and 'cluster'. +# - If CRDB_DEPLOY_MODE is "single", CockroachDB is deployed in single node mode. It is convenient for +# development and testing purposes and should fit in a VM. IT SHOULD NOT BE USED IN PRODUCTION ENVIRONMENTS. +# - If CRDB_DEPLOY_MODE is "cluster", CockroachDB is deployed in cluster mode, and an entire CockroachDB cluster +# with 3 replicas and version v22.2 (set by default) will be deployed. It is convenient for production and +# provides scalability features. If you are deploying for production, also read the following link providing +# details on deploying CockroachDB for production environments: +# Ref: https://www.cockroachlabs.com/docs/stable/recommended-production-settings.html +export CRDB_DEPLOY_MODE=${CRDB_DEPLOY_MODE:-"single"} + +# If not already set, disable flag for dropping database, if it exists. +# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! +# If CRDB_DROP_DATABASE_IF_EXISTS is "YES", the databases starting with "tfs_" will be dropped while +# checking/deploying CockroachDB. +export CRDB_DROP_DATABASE_IF_EXISTS=${CRDB_DROP_DATABASE_IF_EXISTS:-""} + +# If not already set, disable flag for re-deploying CockroachDB from scratch. +# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! +# WARNING: THE REDEPLOY MIGHT TAKE FEW MINUTES TO COMPLETE GRACEFULLY IN CLUSTER MODE +# If CRDB_REDEPLOY is "YES", the database will be dropped while checking/deploying CockroachDB. +export CRDB_REDEPLOY=${CRDB_REDEPLOY:-""} + + +# ----- NATS ------------------------------------------------------------------- + +# If not already set, set the namespace where NATS will be deployed. +export NATS_NAMESPACE=${NATS_NAMESPACE:-"nats"} + +# If not already set, set the external port NATS Client interface will be exposed to. +export NATS_EXT_PORT_CLIENT=${NATS_EXT_PORT_CLIENT:-"4222"} + +# If not already set, set the external port NATS HTTP Mgmt GUI interface will be exposed to. +export NATS_EXT_PORT_HTTP=${NATS_EXT_PORT_HTTP:-"8222"} + +# If not already set, set NATS installation mode. Accepted values are: 'single' and 'cluster'. +# - If NATS_DEPLOY_MODE is "single", NATS is deployed in single node mode. It is convenient for +# development and testing purposes and should fit in a VM. IT SHOULD NOT BE USED IN PRODUCTION ENVIRONMENTS. +# - If NATS_DEPLOY_MODE is "cluster", NATS is deployed in cluster mode, and an entire NATS cluster +# with 3 replicas (set by default) will be deployed. It is convenient for production and +# provides scalability features. +export NATS_DEPLOY_MODE=${NATS_DEPLOY_MODE:-"single"} + +# If not already set, disable flag for re-deploying NATS from scratch. +# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE MESSAGE BROKER INFORMATION! +# If NATS_REDEPLOY is "YES", the message broker will be dropped while checking/deploying NATS. +export NATS_REDEPLOY=${NATS_REDEPLOY:-""} + + +# ----- QuestDB ---------------------------------------------------------------- + +# If not already set, set the namespace where QuestDB will be deployed. +export QDB_NAMESPACE=${QDB_NAMESPACE:-"qdb"} + +# If not already set, set the external port QuestDB Postgre SQL interface will be exposed to. +export QDB_EXT_PORT_SQL=${QDB_EXT_PORT_SQL:-"8812"} + +# If not already set, set the external port QuestDB Influx Line Protocol interface will be exposed to. +export QDB_EXT_PORT_ILP=${QDB_EXT_PORT_ILP:-"9009"} + +# If not already set, set the external port QuestDB HTTP Mgmt GUI interface will be exposed to. +export QDB_EXT_PORT_HTTP=${QDB_EXT_PORT_HTTP:-"9000"} + +# If not already set, set the database username to be used for QuestDB. +export QDB_USERNAME=${QDB_USERNAME:-"admin"} + +# If not already set, set the database user's password to be used for QuestDB. +export QDB_PASSWORD=${QDB_PASSWORD:-"quest"} + +# If not already set, set the table name to be used by Monitoring for KPIs. +export QDB_TABLE_MONITORING_KPIS=${QDB_TABLE_MONITORING_KPIS:-"tfs_monitoring_kpis"} + +# If not already set, set the table name to be used by Slice for plotting groups. +export QDB_TABLE_SLICE_GROUPS=${QDB_TABLE_SLICE_GROUPS:-"tfs_slice_groups"} + +# If not already set, disable flag for dropping tables if they exist. +# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE TABLE INFORMATION! +# If QDB_DROP_TABLES_IF_EXIST is "YES", the tables pointed by variables +# QDB_TABLE_MONITORING_KPIS and QDB_TABLE_SLICE_GROUPS will be dropped while +# checking/deploying QuestDB. +export QDB_DROP_TABLES_IF_EXIST=${QDB_DROP_TABLES_IF_EXIST:-""} + +# If not already set, disable flag for re-deploying QuestDB from scratch. +# WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! +# If QDB_REDEPLOY is "YES", the database will be dropped while checking/deploying QuestDB. +export QDB_REDEPLOY=${QDB_REDEPLOY:-""} + + +# ----- K8s Observability ------------------------------------------------------ + +# If not already set, set the external port Prometheus Mgmt HTTP GUI interface will be exposed to. +export PROM_EXT_PORT_HTTP=${PROM_EXT_PORT_HTTP:-"9090"} + +# If not already set, set the external port Grafana HTTP Dashboards will be exposed to. +export GRAF_EXT_PORT_HTTP=${GRAF_EXT_PORT_HTTP:-"3000"} + + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +# Deploy CockroachDB +./deploy/crdb.sh + +# Deploy NATS +./deploy/nats.sh + +# Deploy QuestDB +./deploy/qdb.sh + +# Deploy Apache Kafka +#./deploy/kafka.sh + +#Deploy Monitoring (Prometheus, Mimir, Grafana) +#./deploy/monitoring.sh + +# Expose Dashboard +#./deploy/expose_dashboard.sh + +# Deploy TeraFlowSDN +./deploy/tfs.sh + +# Show deploy summary +./deploy/show.sh + +echo "Done!" diff --git a/my_deploy.sh b/my_deploy.sh index 358e820d6..8a0b4593b 100755 --- a/my_deploy.sh +++ b/my_deploy.sh @@ -20,7 +20,7 @@ export TFS_REGISTRY_IMAGES="http://localhost:32000/tfs/" # Set the list of components, separated by spaces, you want to build images for, and deploy. -export TFS_COMPONENTS="context device pathcomp opticalcontroller service webui nbi" +export TFS_COMPONENTS="context device pathcomp opticalcontroller service nbi webui" # Uncomment to activate Monitoring (old) #export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring" diff --git a/scripts/bb b/scripts/bb new file mode 100644 index 000000000..3d4bf3117 --- /dev/null +++ b/scripts/bb @@ -0,0 +1,69 @@ +[2025-05-18 19:18:07,555] INFO:__main__:Starting... +[2025-05-18 19:18:07,557] DEBUG:service.service.ServiceServiceServicerImpl:Creating Servicer... +[2025-05-18 19:18:07,557] DEBUG:service.service.ServiceServiceServicerImpl:Servicer Created +[2025-05-18 19:18:07,557] INFO:service.service.ServiceService:Starting Service (tentative endpoint: 0.0.0.0:3030, max_workers: 200)... +[2025-05-18 19:18:07,563] INFO:service.service.ServiceService:Listening on 0.0.0.0:3030... +[2025-05-18 19:18:07,565] DEBUG:service.service.ServiceService:Service started +[2025-05-18 19:29:37,906] DEBUG:service.service.ServiceServiceServicerImpl:CreateService request: {"name": "", "service_config": {"config_rules": []}, "service_constraints": [], "service_endpoint_ids": [], "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "optical-connection1"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"} +[2025-05-18 19:29:37,906] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.106:1010... +[2025-05-18 19:29:37,912] DEBUG:context.client.ContextClient:Channel created +[2025-05-18 19:29:37,912] DEBUG:context.client.ContextClient:SelectService request: {"include_config_rules": false, "include_constraints": false, "include_endpoint_ids": false, "service_ids": {"service_ids": [{"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "optical-connection1"}}]}} +[2025-05-18 19:29:37,924] DEBUG:context.client.ContextClient:SelectService result: {"services": []} +[2025-05-18 19:29:37,924] DEBUG:context.client.ContextClient:SetService request: {"name": "", "service_config": {"config_rules": []}, "service_constraints": [], "service_endpoint_ids": [], "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "optical-connection1"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"} +[2025-05-18 19:29:37,944] DEBUG:context.client.ContextClient:SetService result: {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "service_uuid": {"uuid": "b2a39054-6b61-5460-a712-802d1e37dc43"}} +[2025-05-18 19:29:37,945] DEBUG:service.service.ServiceServiceServicerImpl:CreateService reply: {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "service_uuid": {"uuid": "b2a39054-6b61-5460-a712-802d1e37dc43"}} +[2025-05-18 19:29:37,948] DEBUG:service.service.ServiceServiceServicerImpl:UpdateService request: {"name": "", "service_config": {"config_rules": []}, "service_constraints": [{"action": "CONSTRAINTACTION_UNDEFINED", "custom": {"constraint_type": "type", "constraint_value": "flexi_grid"}}, {"action": "CONSTRAINTACTION_UNDEFINED", "custom": {"constraint_type": "bandwidth[gbps]", "constraint_value": "400.0"}}, {"action": "CONSTRAINTACTION_UNDEFINED", "custom": {"constraint_type": "bidirectionality", "constraint_value": "0"}}], "service_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "T1.1"}}, "endpoint_uuid": {"uuid": "1"}}, {"device_id": {"device_uuid": {"uuid": "T2.1"}}, "endpoint_uuid": {"uuid": "1"}}], "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "optical-connection1"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"} +[2025-05-18 19:29:37,948] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.106:1010... +[2025-05-18 19:29:37,949] DEBUG:context.client.ContextClient:Channel created +[2025-05-18 19:29:37,949] DEBUG:context.client.ContextClient:SelectService request: {"include_config_rules": true, "include_constraints": true, "include_endpoint_ids": true, "service_ids": {"service_ids": [{"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "optical-connection1"}}]}} +[2025-05-18 19:29:37,971] DEBUG:context.client.ContextClient:SelectService result: {"services": [{"name": "optical-connection1", "service_config": {"config_rules": []}, "service_constraints": [], "service_endpoint_ids": [], "service_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "service_uuid": {"uuid": "b2a39054-6b61-5460-a712-802d1e37dc43"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"}]} +[2025-05-18 19:29:37,971] DEBUG:service.service.ServiceServiceServicerImpl:num_disjoint_paths=None +[2025-05-18 19:29:37,971] DEBUG:service.service.ServiceServiceServicerImpl:is_diverse=False +[2025-05-18 19:29:37,971] DEBUG:service.service.ServiceServiceServicerImpl:gps_location_aware=False +[2025-05-18 19:29:37,971] DEBUG:context.client.ContextClient:ListDevices request: {} +[2025-05-18 19:29:38,012] DEBUG:context.client.ContextClient:ListDevices result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.102"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"commit_per_rule\": false,\n\"device_params\": {\n\"name\": \"default\"\n},\n\"endpoints\": [],\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"password\": \"admin\",\n\"type\": \"optical-transponder\",\n\"username\": \"admin\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "4079dce7-3fe6-50a1-b4b4-6574d2db02cb"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "67891767-4d60-53a9-82a4-c2477daca4f7"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "6f6cb9af-3905-5fe0-827c-a942ce1b6fb4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "c4b8eb66-2fcf-5f66-802f-6cd9590fe70b"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}], "device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.2"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.101"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"commit_per_rule\": false,\n\"device_params\": {\n\"name\": \"default\"\n},\n\"endpoints\": [],\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"password\": \"admin\",\n\"type\": \"optical-transponder\",\n\"username\": \"admin\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "7dc65d0e-af57-5d3c-9ba6-f6ec81a354c6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "86f69ce9-15a8-5a6b-9db1-c6ebd9de463e"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "cef46beb-6533-5a93-8541-ed5adc875452"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "d3cbae33-11cd-5be1-ae43-4e390754cb54"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}], "device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.2"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.101"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"commit_per_rule\": false,\n\"device_params\": {\n\"name\": \"default\"\n},\n\"endpoints\": [],\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"password\": \"admin\",\n\"type\": \"optical-transponder\",\n\"username\": \"admin\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "5eb4f156-7811-53f3-9172-8402127cf7b9"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "8b59684b-f324-52cd-a050-f218730162c1"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "cfe606b4-11f1-534e-b5b6-ee45a0ebf616"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "f713412b-aa6e-5c5d-9d0d-de80ad78438f"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}], "device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.1"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.121"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"commit_per_rule\": false,\n\"device_params\": {\n\"name\": \"default\"\n},\n\"endpoints\": [],\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"password\": \"admin\",\n\"type\": \"optical-roadm\",\n\"username\": \"admin\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "02672b50-d231-588d-82d2-e3034f4ad648"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5202"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "10ada157-5543-56e2-a41e-be6ce3875e29"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5101"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "13e0051e-93db-5d6d-9015-fb208123aa0c"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5204"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "588b1e90-162a-5405-bdaf-eb83aabd6ac0"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4201"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "6f46298f-5f2e-52f0-b452-7d88d6c762e6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4102"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "73ae0a3e-ffdb-5b0e-b8b0-0897ba2c3c91"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4104"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "83e19f25-b59b-5707-8f40-ac79e7322456"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5201"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "c609ed28-6bfa-5448-8a49-f163077785fa"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4101"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e8753ebd-7f5a-53b8-85c0-dc674e9c7cd6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4103"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ecd47c4c-441b-5e61-9582-e8aae4e4869c"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5203"}], "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R1"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.102"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"commit_per_rule\": false,\n\"device_params\": {\n\"name\": \"default\"\n},\n\"endpoints\": [],\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"password\": \"admin\",\n\"type\": \"optical-transponder\",\n\"username\": \"admin\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "0329c3cb-7e98-504b-9a08-67a5480eb0a0"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "274a5fa6-0915-5a53-ba0e-996fc25d0aa2"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "2a307a8e-d326-5ea2-9437-b0320fb4c2a6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "70d6a261-98fe-5953-8f28-3379a9f626ab"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}], "device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.1"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.122"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"commit_per_rule\": false,\n\"device_params\": {\n\"name\": \"default\"\n},\n\"endpoints\": [],\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"password\": \"admin\",\n\"type\": \"optical-roadm\",\n\"username\": \"admin\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "29910c4d-7308-54f0-8069-d201d41a6a4e"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5201"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2e0a08c9-c0c9-5872-b004-c727cfb2d7fd"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4103"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "408df1a4-44a3-5907-9c0e-a05f4cde54d5"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4104"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "48fc8049-4e35-5040-863d-1b78bb31f501"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4201"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5e9dcfad-2768-52d3-afb4-829794da6017"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4101"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "71fae668-6fcf-56e9-8272-e47137153b60"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4102"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a9da5dbd-0eb0-55a1-9124-d7017bbed790"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5203"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b0f7ed74-d229-5fa1-a77a-aacaf92e0214"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5204"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b74711ba-09a6-5736-bc80-ad328357ef24"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5202"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e6dfad96-5f35-51bd-85a1-6e16365353f6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5101"}], "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R2"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.102"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"commit_per_rule\": false,\n\"device_params\": {\n\"name\": \"default\"\n},\n\"endpoints\": [],\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"password\": \"admin\",\n\"type\": \"optical-transponder\",\n\"username\": \"admin\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "2a1a216d-8b90-5fb5-a076-a483e91b7dfa"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "44f394cf-e1da-56d5-b850-3329382f2436"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "b1acaee3-904d-5106-ac3d-5ae6c42b5333"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "f16c3478-2dfd-512f-a52d-92c42bb72e10"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}], "device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.3"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.101"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"commit_per_rule\": false,\n\"device_params\": {\n\"name\": \"default\"\n},\n\"endpoints\": [],\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"password\": \"admin\",\n\"type\": \"optical-transponder\",\n\"username\": \"admin\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "15a02a82-64d0-5929-ac72-14585a8f01c6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "b727350a-c291-56e8-b1c6-b46ec8d994f4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "bbdfc5ef-4f8b-5921-9d1f-33dd9a5f18c8"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "dcaae3e3-42c5-50b5-bafb-d3097d567d09"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}], "device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.3"}]} +[2025-05-18 19:29:38,012] DEBUG:service.service.ServiceServiceServicerImpl:[before] request={"name": "", "service_config": {"config_rules": []}, "service_constraints": [{"action": "CONSTRAINTACTION_UNDEFINED", "custom": {"constraint_type": "type", "constraint_value": "flexi_grid"}}, {"action": "CONSTRAINTACTION_UNDEFINED", "custom": {"constraint_type": "bandwidth[gbps]", "constraint_value": "400.0"}}, {"action": "CONSTRAINTACTION_UNDEFINED", "custom": {"constraint_type": "bidirectionality", "constraint_value": "0"}}], "service_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "T1.1"}}, "endpoint_uuid": {"uuid": "1"}}, {"device_id": {"device_uuid": {"uuid": "T2.1"}}, "endpoint_uuid": {"uuid": "1"}}], "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "optical-connection1"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"} +[2025-05-18 19:29:38,012] DEBUG:service.service.ServiceServiceServicerImpl:[after] request={"name": "", "service_config": {"config_rules": []}, "service_constraints": [{"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "type", "constraint_value": "flexi_grid"}}, {"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "bandwidth[gbps]", "constraint_value": "400.0"}}, {"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "bidirectionality", "constraint_value": "0"}}], "service_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "T1.1"}}, "endpoint_uuid": {"uuid": "1"}}, {"device_id": {"device_uuid": {"uuid": "T2.1"}}, "endpoint_uuid": {"uuid": "1"}}], "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "optical-connection1"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"} +[2025-05-18 19:29:38,013] DEBUG:service.service.ServiceServiceServicerImpl:[after] service={"name": "optical-connection1", "service_config": {"config_rules": []}, "service_constraints": [], "service_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "T1.1"}}, "endpoint_uuid": {"uuid": "1"}}, {"device_id": {"device_uuid": {"uuid": "T2.1"}}, "endpoint_uuid": {"uuid": "1"}}], "service_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "service_uuid": {"uuid": "b2a39054-6b61-5460-a712-802d1e37dc43"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"} +[2025-05-18 19:29:38,013] DEBUG:context.client.ContextClient:SetService request: {"name": "optical-connection1", "service_config": {"config_rules": []}, "service_constraints": [{"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "type", "constraint_value": "flexi_grid"}}, {"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "bandwidth[gbps]", "constraint_value": "400.0"}}, {"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "bidirectionality", "constraint_value": "0"}}], "service_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "T1.1"}}, "endpoint_uuid": {"uuid": "1"}}, {"device_id": {"device_uuid": {"uuid": "T2.1"}}, "endpoint_uuid": {"uuid": "1"}}], "service_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "service_uuid": {"uuid": "b2a39054-6b61-5460-a712-802d1e37dc43"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"} +[2025-05-18 19:29:38,049] DEBUG:context.client.ContextClient:SetService result: {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "service_uuid": {"uuid": "b2a39054-6b61-5460-a712-802d1e37dc43"}} +[2025-05-18 19:29:38,049] DEBUG:context.client.ContextClient:SelectService request: {"include_config_rules": true, "include_constraints": true, "include_endpoint_ids": true, "service_ids": {"service_ids": [{"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "service_uuid": {"uuid": "b2a39054-6b61-5460-a712-802d1e37dc43"}}]}} +[2025-05-18 19:29:38,084] DEBUG:context.client.ContextClient:SelectService result: {"services": [{"name": "optical-connection1", "service_config": {"config_rules": []}, "service_constraints": [{"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "type", "constraint_value": "flexi_grid"}}, {"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "bandwidth[gbps]", "constraint_value": "400.0"}}, {"action": "CONSTRAINTACTION_SET", "custom": {"constraint_type": "bidirectionality", "constraint_value": "0"}}], "service_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "5eb4f156-7811-53f3-9172-8402127cf7b9"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "2a307a8e-d326-5ea2-9437-b0320fb4c2a6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "service_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "service_uuid": {"uuid": "b2a39054-6b61-5460-a712-802d1e37dc43"}}, "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_type": "SERVICETYPE_OPTICAL_CONNECTIVITY"}]} +[2025-05-18 19:29:38,084] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.106:1010... +[2025-05-18 19:29:38,085] DEBUG:context.client.ContextClient:Channel created +[2025-05-18 19:29:38,085] DEBUG:qkd_app.client.QKDAppClient:Initializing gRPC client to qkd_appservice:10070... +[2025-05-18 19:29:38,085] DEBUG:qkd_app.client.QKDAppClient:gRPC channel to qkd_appservice:10070 established successfully +[2025-05-18 19:29:38,085] DEBUG:device.client.DeviceClient:Creating channel to 10.152.183.197:2020... +[2025-05-18 19:29:38,086] DEBUG:device.client.DeviceClient:Channel created +[2025-05-18 19:29:38,086] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.106:1010... +[2025-05-18 19:29:38,087] DEBUG:context.client.ContextClient:Channel created +[2025-05-18 19:29:38,087] DEBUG:context.client.ContextClient:GetTopologyDetails request: {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} +[2025-05-18 19:29:38,161] DEBUG:context.client.ContextClient:GetTopologyDetails result: {"devices": [{"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "4079dce7-3fe6-50a1-b4b4-6574d2db02cb"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "67891767-4d60-53a9-82a4-c2477daca4f7"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "6f6cb9af-3905-5fe0-827c-a942ce1b6fb4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "c4b8eb66-2fcf-5f66-802f-6cd9590fe70b"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}], "device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.2"}, {"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "7dc65d0e-af57-5d3c-9ba6-f6ec81a354c6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "86f69ce9-15a8-5a6b-9db1-c6ebd9de463e"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "cef46beb-6533-5a93-8541-ed5adc875452"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "d3cbae33-11cd-5be1-ae43-4e390754cb54"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}], "device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.2"}, {"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "5eb4f156-7811-53f3-9172-8402127cf7b9"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "8b59684b-f324-52cd-a050-f218730162c1"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "cfe606b4-11f1-534e-b5b6-ee45a0ebf616"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "f713412b-aa6e-5c5d-9d0d-de80ad78438f"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}], "device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.1"}, {"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "02672b50-d231-588d-82d2-e3034f4ad648"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5202"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "10ada157-5543-56e2-a41e-be6ce3875e29"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5101"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "13e0051e-93db-5d6d-9015-fb208123aa0c"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5204"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "588b1e90-162a-5405-bdaf-eb83aabd6ac0"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4201"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "6f46298f-5f2e-52f0-b452-7d88d6c762e6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4102"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "73ae0a3e-ffdb-5b0e-b8b0-0897ba2c3c91"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4104"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "83e19f25-b59b-5707-8f40-ac79e7322456"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5201"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "c609ed28-6bfa-5448-8a49-f163077785fa"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4101"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e8753ebd-7f5a-53b8-85c0-dc674e9c7cd6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4103"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ecd47c4c-441b-5e61-9582-e8aae4e4869c"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5203"}], "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R1"}, {"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "0329c3cb-7e98-504b-9a08-67a5480eb0a0"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "274a5fa6-0915-5a53-ba0e-996fc25d0aa2"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "2a307a8e-d326-5ea2-9437-b0320fb4c2a6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "70d6a261-98fe-5953-8f28-3379a9f626ab"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}], "device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.1"}, {"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "29910c4d-7308-54f0-8069-d201d41a6a4e"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5201"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2e0a08c9-c0c9-5872-b004-c727cfb2d7fd"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4103"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "408df1a4-44a3-5907-9c0e-a05f4cde54d5"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4104"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "48fc8049-4e35-5040-863d-1b78bb31f501"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4201"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5e9dcfad-2768-52d3-afb4-829794da6017"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4101"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "71fae668-6fcf-56e9-8272-e47137153b60"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "4102"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a9da5dbd-0eb0-55a1-9124-d7017bbed790"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5203"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b0f7ed74-d229-5fa1-a77a-aacaf92e0214"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5204"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b74711ba-09a6-5736-bc80-ad328357ef24"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5202"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e6dfad96-5f35-51bd-85a1-6e16365353f6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVELENGTH", "kpi_sample_types": [], "name": "5101"}], "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R2"}, {"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "2a1a216d-8b90-5fb5-a076-a483e91b7dfa"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "44f394cf-e1da-56d5-b850-3329382f2436"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "b1acaee3-904d-5106-ac3d-5ae6c42b5333"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "f16c3478-2dfd-512f-a52d-92c42bb72e10"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}], "device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.3"}, {"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "15a02a82-64d0-5929-ac72-14585a8f01c6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": "4"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "b727350a-c291-56e8-b1c6-b46ec8d994f4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": "2"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "bbdfc5ef-4f8b-5921-9d1f-33dd9a5f18c8"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": "3"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "dcaae3e3-42c5-50b5-bafb-d3097d567d09"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, "endpoint_location": {}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": "1"}], "device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.3"}], "links": [], "name": "admin", "optical_links": [{"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "29910c4d-7308-54f0-8069-d201d41a6a4e"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "2a307a8e-d326-5ea2-9437-b0320fb4c2a6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "5ba1d9b6-120a-5680-b745-2ea24aec1cc3"}}, "name": "R2-T2.1", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "1", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "4101", "remote_peer_port": "1", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "5201", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b74711ba-09a6-5736-bc80-ad328357ef24"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "c4b8eb66-2fcf-5f66-802f-6cd9590fe70b"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "5f9f4309-d24d-52e0-9d60-ba84839a5bda"}}, "name": "R2-T2.2", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "2", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "4102", "remote_peer_port": "2", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "5202", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "83e19f25-b59b-5707-8f40-ac79e7322456"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "5eb4f156-7811-53f3-9172-8402127cf7b9"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "63c6a257-f171-59f8-b1e8-e3c4086ba36a"}}, "name": "R1-T1.1", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "1", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "4101", "remote_peer_port": "1", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "5201", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "7dc65d0e-af57-5d3c-9ba6-f6ec81a354c6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "6f46298f-5f2e-52f0-b452-7d88d6c762e6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "817a2fcb-5dfd-55a6-b669-a141014cc38d"}}, "name": "T1.2-R1", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "4102", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "2", "remote_peer_port": "5202", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "2", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "c4b8eb66-2fcf-5f66-802f-6cd9590fe70b"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "71fae668-6fcf-56e9-8272-e47137153b60"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "884c6c6a-ad1b-5228-a48f-e9db4bc174df"}}, "name": "T2.2-R2", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "4102", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "2", "remote_peer_port": "5202", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "2", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ecd47c4c-441b-5e61-9582-e8aae4e4869c"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "bbdfc5ef-4f8b-5921-9d1f-33dd9a5f18c8"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "89e3a6c6-d613-55bf-925c-c817ee24a133"}}, "name": "R1-T1.3", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "3", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "4103", "remote_peer_port": "3", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "5203", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "02672b50-d231-588d-82d2-e3034f4ad648"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "7dc65d0e-af57-5d3c-9ba6-f6ec81a354c6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "b11e2e7b-ef00-5c11-9dc6-5fd34bd11f6e"}}, "name": "R1-T1.2", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "2", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "4102", "remote_peer_port": "2", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "5202", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "b1acaee3-904d-5106-ac3d-5ae6c42b5333"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2e0a08c9-c0c9-5872-b004-c727cfb2d7fd"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "be7afc05-6e45-5899-896b-b331d6ab65c8"}}, "name": "T2.3-R2", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "4103", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "3", "remote_peer_port": "5203", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "3", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a9da5dbd-0eb0-55a1-9124-d7017bbed790"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "b1acaee3-904d-5106-ac3d-5ae6c42b5333"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "d4e89764-11c5-5f59-b7d6-a3aa2dab43df"}}, "name": "R2-T2.3", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "3", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "4103", "remote_peer_port": "3", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "5203", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "588b1e90-162a-5405-bdaf-eb83aabd6ac0"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e6dfad96-5f35-51bd-85a1-6e16365353f6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "e273644c-0dfa-5053-8850-0722995e7ba3"}}, "name": "R1-R2", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "5101", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "5101", "remote_peer_port": "4201", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "4201", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "5eb4f156-7811-53f3-9172-8402127cf7b9"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "c609ed28-6bfa-5448-8a49-f163077785fa"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "e8bd9082-ebad-55b8-b110-7c21fddaf1cf"}}, "name": "T1.1-R1", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "4101", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "1", "remote_peer_port": "5201", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "1", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "48fc8049-4e35-5040-863d-1b78bb31f501"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "10ada157-5543-56e2-a41e-be6ce3875e29"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "eae23f48-40de-5aae-b3d1-fa3cda231678"}}, "name": "R2-R1", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "5101", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "5101", "remote_peer_port": "4201", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "4201", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "2a307a8e-d326-5ea2-9437-b0320fb4c2a6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5e9dcfad-2768-52d3-afb4-829794da6017"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "ebb2ca0f-d4c1-51c4-ab41-dceea90f811f"}}, "name": "T2.1-R2", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "4101", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "1", "remote_peer_port": "5201", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "1", "used": false}}, {"link_endpoint_ids": [{"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "bbdfc5ef-4f8b-5921-9d1f-33dd9a5f18c8"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}, {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e8753ebd-7f5a-53b8-85c0-dc674e9c7cd6"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}}], "link_id": {"link_uuid": {"uuid": "f79a817c-a6a0-55d5-9398-a582a9835be9"}}, "name": "T1.3-R1", "optical_details": {"c_slots": {"1": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "2": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "3": 1, "30": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1}, "dst_port": "4103", "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "115": 1, "116": 1, "117": 1, "118": 1, "119": 1, "120": 1}, "length": 0.0, "local_peer_port": "3", "remote_peer_port": "5203", "s_slots": {"501": 1, "502": 1, "503": 1, "504": 1, "505": 1, "506": 1, "507": 1, "508": 1, "509": 1, "510": 1, "511": 1, "512": 1, "513": 1, "514": 1, "515": 1, "516": 1, "517": 1, "518": 1, "519": 1, "520": 1}, "src_port": "3", "used": false}}], "topology_id": {"context_id": {"context_uuid": {"uuid": "43813baf-195e-5da6-af20-b3d0922e71a7"}}, "topology_uuid": {"uuid": "c76135e3-24a8-5e92-9bed-c3c9139359c8"}}} +[2025-05-18 19:29:38,161] DEBUG:service.service.tools.OpticalTools:Optical Controller: base_url=http://10.152.183.110:10060/OpticalTFS +[2025-05-18 19:29:38,170] DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): 10.152.183.110:10060 +[2025-05-18 19:29:38,253] DEBUG:urllib3.connectionpool:http://10.152.183.110:10060 "GET /OpticalTFS/GetTopology/admin/admin HTTP/1.1" 200 5 +[2025-05-18 19:29:38,254] DEBUG:service.service.tools.OpticalTools:GetTopology Response <Response [200]> +[2025-05-18 19:29:38,254] INFO:root:TEEEEEEEEEEEEEEST type=flexi_grid +[2025-05-18 19:29:38,254] INFO:root:TEEEEEEEEEEEEEEST 2 +[2025-05-18 19:29:38,254] DEBUG:service.service.tools.OpticalTools:Optical Controller: base_url=http://10.152.183.110:10060/OpticalTFS +[2025-05-18 19:29:38,255] ERROR:service.service.ServiceServiceServicerImpl:UpdateService exception +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/service/service/ServiceServiceServicerImpl.py", line 309, in UpdateService + reply_txt = add_lightpath(src, dst, bitrate, bidir) + File "/var/teraflow/service/service/tools/OpticalTools.py", line 154, in add_lightpath + r = requests.put(urlx, headers=headers) + File "/usr/local/lib/python3.9/site-packages/requests/api.py", line 132, in put + return request('put', url, data=data, **kwargs) + File "/usr/local/lib/python3.9/site-packages/requests/api.py", line 61, in request + return session.request(method=method, url=url, **kwargs) + File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 515, in request + prep = self.prepare_request(req) + File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 443, in prepare_request + p.prepare( + File "/usr/local/lib/python3.9/site-packages/requests/models.py", line 318, in prepare + self.prepare_url(url, params) + File "/usr/local/lib/python3.9/site-packages/requests/models.py", line 392, in prepare_url + raise MissingSchema(error) +requests.exceptions.MissingSchema: Invalid URL '': No scheme supplied. Perhaps you meant http://? diff --git a/src/common/Constants.py b/src/common/Constants.py index b873b351c..d433264cc 100644 --- a/src/common/Constants.py +++ b/src/common/Constants.py @@ -136,7 +136,7 @@ DEFAULT_SERVICE_HTTP_BASEURLS = { def OpticalServiceType(value): if value == "multi_granular": return 1 - elif value == "flex_grid": + elif value == "flexi_grid": return 2 elif value == "pmp": return 3 diff --git a/src/opticalcontroller/RSA.py b/src/opticalcontroller/RSA.py index f5c8bbc69..95a49113e 100644 --- a/src/opticalcontroller/RSA.py +++ b/src/opticalcontroller/RSA.py @@ -16,11 +16,13 @@ import logging from opticalcontroller.dijkstra import * from opticalcontroller.tools import * from opticalcontroller.variables import * - +debug = 1 +''' LOGGER = logging.getLogger(__name__) def print(*args) -> None: - LOGGER.info(' '.join([str(a) for a in args])) + LOGGER.debug(' '.join([str(a) for a in args])) +''' class RSA(): def __init__(self, nodes, links): @@ -170,6 +172,8 @@ class RSA(): drop = links[-1] found = 0 for l in links: + if debug: + print(f"TEMP TEST ANDREA, {l}") c_slots[l] = [] l_slots[l] = [] s_slots[l] = [] @@ -307,8 +311,7 @@ class RSA(): if 'used' in fib: fib['used'] = False #fib[band].keys().sort() - #set_link_update(fib,link,test="restoration") - + #set_link_update(fib,link,test="restoration") def restore_optical_band(self, optical_band_id, slots, band): @@ -316,13 +319,8 @@ class RSA(): self.optical_bands[optical_band_id][band][str(i)] = 1 #self.optical_bands[optical_band_id][band].append(int(i)) - #self.optical_bands[optical_band_id][band].sort() - - - - + #self.optical_bands[optical_band_id][band].sort() - def restore_optical_band_2(self, optical_band_id, slots, band ,links): print(f"example of band { band}") print(f"example of slots {slots}") @@ -362,11 +360,7 @@ class RSA(): self.restore_link_2(fib, slots, band, link=link) if debug: print(fib[band]) - - - - if o_b_id is not None: - + if o_b_id is not None: if debug: print("restoring OB") print(f"invoking restore_optical_band o_b_id: {o_b_id} , slots {slots} , band {band} ") @@ -413,8 +407,6 @@ class RSA(): def del_band(self, flow, o_b_id = None): print(f"delete band {flow} ") - - flows = flow["flows"] band = None #slots = flow["slots"] @@ -430,13 +422,17 @@ class RSA(): links= self.optical_bands[o_b_id]["links"] band = self.optical_bands[o_b_id]["band_type"] n_slots =self.optical_bands[o_b_id]["n_slots"] - if n_slots > 0: - #slots=[i+1 for i in range(n_slots)] - for key in self.optical_bands[o_b_id][band].keys(): - slots.append(int(key)) - slots.sort() - - + if isinstance(n_slots, str): + if n_slots == "full_band": + for key in self.optical_bands[o_b_id][band].keys(): + slots.append(int(key)) + slots.sort() + elif isinstance(n_slots, int): + if n_slots > 0: + #slots=[i+1 for i in range(n_slots)] + for key in self.optical_bands[o_b_id][band].keys(): + slots.append(int(key)) + slots.sort() for l in links: if debug: print(l) diff --git a/src/service/service/ServiceServiceServicerImpl.py b/src/service/service/ServiceServiceServicerImpl.py index 300e5a6fe..48cb93c6b 100644 --- a/src/service/service/ServiceServiceServicerImpl.py +++ b/src/service/service/ServiceServiceServicerImpl.py @@ -286,7 +286,7 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): dst = devs[1] bidir = None ob_band = None - oc_type = "multi-granular" + oc_type = 1 bitrate = 100 for constraint in service.service_constraints: if "bandwidth" in constraint.custom.constraint_type: @@ -296,7 +296,9 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): elif "optical-band-width" in constraint.custom.constraint_type: ob_band = int(constraint.custom.constraint_value) elif "type" in constraint.custom.constraint_type: + logging.info(f"TEEEEEEEEEEEEEEST {constraint.custom.constraint_type}={constraint.custom.constraint_value}") oc_type = OpticalServiceType(str(constraint.custom.constraint_value)) + logging.info(f"TEEEEEEEEEEEEEEST {oc_type}") reply_txt = "" # to get the reply form the optical module @@ -307,7 +309,7 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): reply_txt = add_lightpath(src, dst, bitrate, bidir) else: reply_txt = add_flex_lightpath(src, dst, bitrate, bidir, ob_band) - # reply with 2 transponders and 2 roadms + logging.info(f"TEEEEEEEEEEEEEEST {oc_type}") reply_json = json.loads(reply_txt) LOGGER.info('[optical] reply_json[{:s}]={:s}'.format(str(type(reply_json)), str(reply_json))) optical_band_txt = "" @@ -413,37 +415,43 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): dst = get_device_name_from_uuid(devices, devs[1]) bitrate = 100 bidir = 0 + oc_type = 1 for constraint in service.service_constraints: if "bandwidth" in constraint.custom.constraint_type: bitrate = int(float(constraint.custom.constraint_value)) - break + if "type" in constraint.custom.constraint_type: + oc_type = OpticalServiceType(str(constraint.custom.constraint_value)) + ''' if service.service_constraints: bitrate = int(float( service.service_constraints[0].custom.constraint_value - )) - if len(service.service_config.config_rules) > 0: - c_rules_dict = json.loads( - service.service_config.config_rules[0].custom.resource_value) - ob_id=None - flow_id=None - if "ob_id" in c_rules_dict: - ob_id = c_rules_dict["ob_id"] - if ("flow_id" in c_rules_dict): - flow_id = c_rules_dict["flow_id"] - #if ("ob_id" in c_rules_dict): - # ob_id = c_rules_dict["ob_id"] - params['bitrate']=bitrate - params['dst']=dst - params['src']=src - params['ob_id']=ob_id - params['flow_id']=flow_id - params['bidir'] = bidir - + )) + ''' + #multi-granular + if oc_type == 1: + if len(service.service_config.config_rules) > 0: + c_rules_dict = json.loads( + service.service_config.config_rules[0].custom.resource_value) + ob_id=None + flow_id=None + if "ob_id" in c_rules_dict: + ob_id = c_rules_dict["ob_id"] + if ("flow_id" in c_rules_dict): + flow_id = c_rules_dict["flow_id"] + #if ("ob_id" in c_rules_dict): + # ob_id = c_rules_dict["ob_id"] + params['bitrate']=bitrate + params['dst']=dst + params['src']=src + params['ob_id']=ob_id + params['flow_id']=flow_id + params['bidir'] = bidir - tasks_scheduler = TasksScheduler(self.service_handler_factory) - tasks_scheduler.compose_from_optical_service(service, params=params, is_delete=True) - tasks_scheduler.execute_all() - return Empty() + + tasks_scheduler = TasksScheduler(self.service_handler_factory) + tasks_scheduler.compose_from_optical_service(service, params=params, is_delete=True) + tasks_scheduler.execute_all() + return Empty() # Normal service # Feed TaskScheduler with this service and the sub-services and sub-connections related to this service. diff --git a/src/service/service/tools/OpticalTools.py b/src/service/service/tools/OpticalTools.py index ded45b63a..55bb6d242 100644 --- a/src/service/service/tools/OpticalTools.py +++ b/src/service/service/tools/OpticalTools.py @@ -150,7 +150,7 @@ def add_lightpath(src, dst, bitrate, bidir) -> str: base_url = get_optical_controller_base_url() if bidir is None: bidir = 1 - urlx = "{:s}/AddLightpath/{:s}/{:s}/{:s}/{:s}".format(base_url, src, dst, str(bitrate), str(bidir)) + urlx = "{:s}/AddLightpath/{:s}/{:s}/{:s}/{:s}".format(base_url, src, dst, str(bitrate), str(bidir)) r = requests.put(urlx, headers=headers) print(f"addpathlight {r}") reply = r.text -- GitLab